我正在尝试匹配url中的正则表达式?page
http://mydomain.com/?page在.htaccess.中
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中的问号regex?
RewriteRule
中的匹配只匹配URI,而不是查询字符串。为了与查询字符串匹配,您需要使用RewriteCond
:
RewriteCond %{QUERY_STRING} ^page$
RewriteRule ^ /?menyu=404 [L]
请注意,%{QUERY_STRING}变量不包括前导。
我认为您需要移除硬锚才能开始输入^
:
RewriteRule ^.*?page$ ?menyu=404 [L]
或者,如果你想将其限制在特定的域:
RewriteRule ^mydomain.com?page$ ?menyu=404 [L]
文字问号的正则表达式为?
在字符类中,不需要转义任何内容(除了]
),所以[?]
也可以。