首页 > 解决方案 > MOD_WRITE Apache Tomcat REWRITE CONDITIONS 结合 request_uri 和 request_method

问题描述

我正在尝试编写一个重写条件,我希望允许特定的 URL 与特定的请求方法结合使用。但我正在尝试一切,但没有运气。

我想用文字做什么:
如果我的 URI 是 /login 并且请求方法是 POST 则允许(如没有替换。)

我试过的东西不起作用

RewriteCond %{REQUEST_URI} *\.(css|js|html|png|jpg|jpeg|gif|txt|ttf|json|woff|ico)$ [OR]
RewriteCond %{REQUEST_URI} ^(/rest/api).*$ [OR]
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{REQUEST_URI} ^(/login)$ [OR]
RewriteRule ^(.*)$ - [L]

RewriteRule ^(.*)$ /index.html

我想要什么

RewriteCond %{REQUEST_URI} .*\.(css|js|html|png|jpg|jpeg|gif|txt|ttf|json|woff|ico)$ [OR]
RewriteCond %{REQUEST_URI} ^(/jarvis/api).*$ [OR]
RewriteCond %{REQUEST_METHOD} =POST (HERE I want to put AND to COMBINE THEM)
RewriteCond %{REQUEST_URI} ^(/login)$ [OR]
RewriteRule ^(.*)$ - [L]

RewriteRule ^(.*)$ /index.html

我有一种感觉,这很容易,我只是不知道如何。任何帮助将不胜感激

标签: apachemod-rewriteurl-rewriting

解决方案


我设法使它工作。有一个解决方法。发布它可能会帮助其他用户。

使用如下所示的链标志

RewriteCond %{REQUEST_METHOD} POST [NC]
RewriteRule ^(.*)$ - [C]
RewriteCond %{REQUEST_URI} (/login)$ [NC]
RewriteRule ^(.*)$ - [L]

因此,如果传入的请求具有请求方法 POST,则没有进行替换,并且它移动到下一个规则(链标志工作),在这种情况下是请求 URI xxxx /login,如果匹配,则没有进行替换喜欢需要。


推荐阅读