2012-01-30 63 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