我有像你这样的网址
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]
因为我有更多不好的行为而不是好的我想从这条规则中排除好的行为。 但上面的例子不起作用。
答案 0 :(得分:3)
使用以下规则:
RewriteCond %{QUERY_STRING} (^|&)act=(.*)
RewriteCond %{QUERY_STRING} !(^|&)act=(somethinggood|somethingbetter)(&|$)
RewriteRule ^(.*) - [F]
参数act
可以是任何地方(例如http://example.com/?act=somethinggood
和http://example.com/?mode=happy&act=somethinggood
和http://example.com/?mode=happy&act=somethinggood&extra=yes
都可以)
如果act
参数的值为空,则会被拒绝(例如http://example.com/?act=
被视为BAD参数)
根据您提供的网址示例,此规则将应用于查询字符串中包含act
参数的所有网址。