MOD_WRITE结合了request_uri和request_method

时间:2018-10-20 00:28:40

标签: apache mod-rewrite url-rewriting

我正在尝试编写一种重写条件,其中我想允许将特定的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

我感觉很简单,我只是不知道怎么做。 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我设法使其起作用。解决方法。将其发布以帮助其他用户。

使用如下所示的Chain标志

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

因此,如果传入的请求具有请求方法POST,则表示未进行替代,并且移至下一条规则(链标志有效),在这种情况下/ login是请求URI xxxx,如果匹配,则没有替代。按要求完成。