1

这个答案的帮助下,我阻止了机器人使用这个 RewriteRule 破解我的 Web 应用程序的尝试

RewriteRule (?:foo.php|bar.pl|baz.py) - [R=503,L]

但是,虽然我需要foo.php使用 503 阻止访问,但我还需要访问naked-foo.php上述代码块。

有没有办法专门从规则中排除一组 URL。

4

2 回答 2

1

你可以试试这个:

RewriteEngine On

# Add files to exclude
RewriteCond %{REQUEST_URI} (1.php|2.html|3.txt) [NC]

# Or add file types to exclude (Remove the previous condition if used)
RewriteCond %{REQUEST_URI} \.(php|html|js)     [NC]

RewriteRule  .* - [L]

# Your rule
RewriteRule (?:foo.php|bar.pl|baz.py) - [R=503,L]
于 2013-04-23T13:18:50.877 回答
1

我给出的正则表达式似乎太宽泛了。它阻止所有包含 foo.php,bar.pl或的请求baz.py。如果你想完全阻止/foo.php等等,你可以用^...$

RewriteRule ^(?:foo.php|bar.pl|baz.py)$ - [R=503,L]

当脚本可以在子目录中时,以斜杠作为前缀

RewriteRule /(?:foo.php|bar.pl|baz.py)$ - [R=503,L]

您还可以使用多个规则

RewriteRule ^(?:foo.php|bar.pl|baz.py)$ - [R=503,L]
RewriteRule /(?:foo.php|baz.py)$ - [R=503,L]
RewriteRule /bar.pl$ - [R=503,L]

或者

RewriteRule ^foo.php$ - [R=503,L]
RewriteRule /foo.php$ - [R=503,L]
RewriteRule /bar.pl$ - [R=503,L]
RewriteRule baz.py - [R=503,L]

并尽可能具体或广泛,因为你需要。

于 2013-04-23T15:12:59.133 回答