我正在写一个重定向来匹配这个模式/消息/ *的任何网址。
RewriteRule ^/message/(.+)$ http://abet.in/message/$1 [NC,R=301,L]
现在我想通过不在网址中允许一些字符串模式来修改它。
RewriteCond to check /message/index.html in the url.
1. Check if the request url contains /message/index.html.
2. If the condition is not met then do a redirect.
我尝试了以下方法。但我不确定它们是否正确。
RewriteCond %{THE_REQUEST} !^/message/index
RewriteCond %{REQUEST_URI} !^/message/index [NC]
有人可以告诉你如何做到这一点。
答案 0 :(得分:2)
%{THE_REQUEST}
包含一个类似于常规页面请求的字符串:
GET /message/index.html HTTP/1.1
%{REQUEST_URI}
看起来像这样:
/message/index.html
所以你的第二个选择几乎是正确的。 RewriteRules的 Pattern 开头不需要/
。
此外,这两条规则将阻止所有启动/message/index
的请求被重定向:
RewriteCond %{REQUEST_URI} !^/message/index [NC]
RewriteRule ^message/(.+)$ http://abet.in/message/$1 [NC,R=301,L]
如果您只想阻止/message/index.html
而不是/message/index.php
或/message/index-of-something-else
,请执行以下操作:
RewriteCond %{REQUEST_URI} !^/message/index\.html [NC]
RewriteRule ^message/(.+)$ http://abet.in/message/$1 [NC,R=301,L]