在this answer的帮助下,我阻止机器人使用此RewriteRule破解我的网络应用程序
RewriteRule (?:foo.php|bar.pl|baz.py) - [R=503,L]
但是,虽然我需要使用503阻止对foo.php
的访问,但我还需要访问上述代码阻止的naked-foo.php
。
是否有任何方法可以从规则中明确排除一组网址。
答案 0 :(得分: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]
答案 1 :(得分:1)
我给的regular expression似乎过于宽泛。它会阻止包含 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]
并按照您的需要具体或宽泛。