SetEnvIf Referer example\.com\/ isgood
# You can also stop bots with the following:
SetEnvIfNoCase User-Agent "bot|crawl|spid|slurp|cloud|admant|ltx|qwant" bad_bot
<RequireAll>
Require env isgood
# the next line will throw out bots, even if they munge the 'Referer'
Require not env bad_bot
</RequireAll>
1条答案
按热度按时间n3schb8v1#
我也遇到过类似的问题,
<If>
和regex试图只允许从我网站上的其他地方访问受保护的目录。<If>
似乎只适用于文字字符串(即。没有regex)。例如,将其放入受保护目录的.htaccess文件中:
将阻止来自https://example.com/valid_subdir以外的任何位置的所有访问
如果这是你想要的,很好-但在大多数情况下,它的限制太多,例如。从https://example.com/another_subdir尝试的访问将失败。如果“www.”被前置,或者网站变成普通的“http”,这两种情况都可能发生,如果托管平台发生变化。
我通过设置一个环境变量并通过
<RequireAll>
验证访问来解决这个问题。这是笨重的,是的,但可悲的是,这是许多阿帕切人的情况。将其放在受保护目录的.htaccess文件中(注意:你仍然需要拼写错误的'referer'):
如果合法用户单击https://example.com/any_page(或www.example.com/any_page,或http://example.com/any_page)上的链接,他们将进入受保护的目录。任何从其他地方访问该目录的尝试都将得到错误403。
HTH