在这个答案的帮助下,我阻止了机器人使用这个 RewriteRule 破解我的 Web 应用程序的尝试
RewriteRule (?:foo.php|bar.pl|baz.py) - [R=503,L]
但是,虽然我需要foo.php
使用 503 阻止访问,但我还需要访问naked-foo.php
上述代码块。
有没有办法专门从规则中排除一组 URL。
你可以试试这个:
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]
我给出的正则表达式似乎太宽泛了。它阻止所有包含 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]
并尽可能具体或广泛,因为你需要。