允许在某些查询字符串存在时访问,否则拒绝

时间:2012-12-18 07:44:30

标签: .htaccess mod-rewrite apache2

我希望在查询字符串中有s=stick_paths=stick_relative时允许访问我的网站,否则拒绝访问。例如,允许访问www.domain.com/?s=stick_path但拒绝访问www.domain.com/?s=ck_relative或www.domain.com/?s=action_path。

我尝试过简单的例子,例如www.domain.com/?s=stick_path,但它似乎不起作用。

    RewriteCond %{QUERY_STRING} !^s=stick_path$
    RewriteRule ^.* - [F,L]

我认为如果s参数存在两次,我可以欺骗.htaccess规则,例如www.domain.com/?s=stick_path&s=action_path

更新 .htaccess中缺少RewriteEngine ON

1 个答案:

答案 0 :(得分:2)

当我尝试转到http://localhost/?s=stick_path时,您为我工作的规则,但如果您希望能够在任何地方检查查询字符串,请尝试:

RewriteCond %{QUERY_STRING} !(^|&)s=stick_path(&|$) 
RewriteCond %{QUERY_STRING} !(^|&)s=stick_relative(&|$)
RewriteRule ^.* - [F,L]

如果s=stick_paths=stick_relative位于查询字符串中的任何位置,则此方法有效。