2

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

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

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

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

4

2 回答 2

3

当我尝试转到时,您的规则对我有用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位于任何位置,则此方法有效。

于 2012-12-18T07:53:03.733 回答
0

从 OP 的更新中提取的答案

RewriteEngine ON.htaccess 中缺少。

所以,正确的代码是:

RewriteEngine on
RewriteCond %{QUERY_STRING} !^s=stick_path$
RewriteRule ^.* - [F,L]
于 2022-02-10T05:02:01.840 回答