如果参数等于某事,则mod_rewrite拒绝访问

时间:2011-07-07 12:19:01

标签: .htaccess mod-rewrite

我有像你这样的网址 mydomain.com?act=somethingbad
mydomain.com?act=somethingworse

mydomain.com?act=somethinggood
mydomain.com?act=somethingbetter

我需要禁止做坏事。 试过像:

RewriteCond %{QUERY_STRING} act=(.*)
RewriteCond %{QUERY_STRING} act=[^(somethinggood)]
RewriteRule ^(.*) - [F]

因为我有更多不好的行为而不是好的我想从这条规则中排除好的行为。 但上面的例子不起作用。

1 个答案:

答案 0 :(得分:3)

使用以下规则:

RewriteCond %{QUERY_STRING} (^|&)act=(.*)
RewriteCond %{QUERY_STRING} !(^|&)act=(somethinggood|somethingbetter)(&|$)
RewriteRule ^(.*) - [F]
  1. 参数act可以是任何地方(例如http://example.com/?act=somethinggoodhttp://example.com/?mode=happy&act=somethinggoodhttp://example.com/?mode=happy&act=somethinggood&extra=yes都可以)

  2. 如果act参数的值为空,则会被拒绝(例如http://example.com/?act=被视为BAD参数)

  3. 根据您提供的网址示例,此规则将应用于查询字符串中包含act参数的所有网址。