我正在尝试匹配.htaccess中网址http://mydomain.com/?page中的正则表达式?page
。
RewriteRule ^([\?])page$ ?menyu=404 [L]
RewriteRule ^([\\?])page$ ?menyu=404 [L]
RewriteRule ^(\?)page$ ?menyu=404 [L]
RewriteRule ^(\\?)page$ ?menyu=404 [L]
RewriteRule ^\?page$ ?menyu=404 [L]
RewriteRule ^\\?page$ ?menyu=404 [L]
对于我的生活,这些都不起作用。
简单地说,我如何匹配.htaccess中的问号正则表达式?
答案 0 :(得分:4)
RewriteRule
中的匹配仅匹配URI,不是查询字符串。要与查询字符串匹配,您需要使用RewriteCond
:
RewriteCond %{QUERY_STRING} ^page$
RewriteRule ^ /?menyu=404 [L]
请注意,%{QUERY_STRING}变量不包含前导?。
答案 1 :(得分:-1)
我认为你需要删除硬锚到输入开始^
:
RewriteRule ^.*\?page$ ?menyu=404 [L]
或者,如果您想将其限制在该特定域:
RewriteRule ^mydomain.com\?page$ ?menyu=404 [L]
文字问号的正则表达式为\?
在字符类中,不需要转义任何内容(]
除外),因此[?]
也可以。