gpt4 book ai didi

apache - Rewritecond - 错误的标志分隔符 .htaccess (Apache)

转载 作者:行者123 更新时间:2023-12-04 05:13:57 29 4
gpt4 key购买 nike

我正在尝试使用 .htaccess 将机器人/不需要的客户端重定向到错误页面。
但在任何连接上它只会带来“RewriteCond:Bad flag delimiters”

.htaccess:

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} askpeter_bot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Jakarta [NC,OR]
...
RewriteCond %{HTTP_USER_AGENT} Genieo [NC]
RewriteRule ^(.*) "http\:\/\/www\.example\.com\/bots\/notallowed.html" [F]

任何想法可能是什么问题?

编辑:
现在我使用拒绝来阻止用户代理
deny from env=block
SetEnvIfNoCase User-Agent "USER-AGENT" block=yes

但这不是我想要的方式,因为你只是得到一个空白页面而没有消息为什么

最佳答案

当您使用 [F] 或 [R=403] 标志时,apache 会呈现 ErrorDocument对于指定的代码。您可以使用 ErrorDocument 指令进行设置,如下所示:

ErrorDocument 403 /bots/notallowed.html

在您的情况下,这种方法的问题在于,当发送 403 代码时,它将用于机器人和人类。

为了将其限制为机器人,我建议如下:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} askpeter_bot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Jakarta [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Genieo [NC]
RewriteRule ^(.*)$ /bots/notallowed.php [L]

然后在 notallowed.php 中,您可以使用 header 函数发送正确的 header :
<?php header("HTTP/1.0 403 Forbidden"); ?>
Go away, bot.

如果您不使用 PHP,则可以使用 perl、python、ruby 等。在这种情况下,关键是从脚本发送 header ,而不是依靠 apache 发送 header 。

编辑:

由于您已经尝试过这个,我认为您的一个或多个规则可能有某种隐藏的控制字符。您可以使用 cat 找到这些:
cat -v .htaccess

如果由于某种原因这不起作用,请尝试使用此 python:
python -c "f = open('.htaccess', 'r'); f.seek(0); file = f.readlines(); print file"

关于apache - Rewritecond - 错误的标志分隔符 .htaccess (Apache),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14548779/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com