2012-01-30 74 views
1

我试图在.htaccess中的URL http://mydomain.com/?page中匹配正则表达式?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中匹配问号正则表达式?

回答

-1

我认为你需要删除硬盘锚启动的输入^

RewriteRule ^.*\?page$ ?menyu=404 [L] 

或者,如果你希望把它限制在特定的域:

RewriteRule ^mydomain.com\?page$ ?menyu=404 [L] 


的字面问号的正则表达式是\?
在字符类中,不需要转义任何东西(]除外),所以[?]也可以。

+0

这并不适用。 – BantuCoder 2012-01-30 00:53:29

+3

'RewriteRule'与查询字符串不匹配。 – 2012-01-30 00:55:35

4

RewriteRule中的匹配只匹配URI,而不是查询字符串。为了配合对查询字符串,你需要使用一个RewriteCond

RewriteCond %{QUERY_STRING} ^page$ 
RewriteRule^/?menyu=404 [L] 

注意,%{QUERY_STRING}变量好好尝试一下包括领先的

+0

像Apple工厂中的人一样工作。谢谢。 – BantuCoder 2012-01-30 00:56:50