Google正在访问带有参数的页面,我需要阻止它。
在所有带有参数的页面上给予404页,类似于site.com?q=text或site.com/?q=text
但不阻止,如果链接只是site.com
我为.htaccess写了这个脚本
ErrorDocument 403 "Your connection was rejected"
ErrorDocument 404 /404.shtml
RewriteEngine On
#RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_USER_AGENT} (Googlebot) [NC]
RewriteCond %{REQUEST_URI} ^/q= [NC]
RewriteRule ^ - [F,L]
字符串
但有2个问题首先-如何设置参数
第二-当他们阻止不显示404页面和显示
Not Found
The requested URL was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
型
但是我给予ErrorDocument 404 /404.shtml。为什么Apache找不到404.shtml?如果我给予一个缺失的页面,它会正常显示为404.shtml。
1条答案
按热度按时间ct2axkht1#
首先,您需要使用
QUERY_STRING
而不是REQUEST_URI
来匹配查询字符串。此外,你会得到这个错误,因为查询字符串没有在重定向的URL中获得,即。
404
重定向后的/404.shtml?q=text
,您的规则将再次尝试重定向到相同的URL。理想情况下,您应该像这样返回
403
forbidden:字符串
但是,如果你必须使用
404
,那么就像这样使用它:型
它将对除
/404.shtml
之外的所有URL执行此规则。您也可以像这样检查
REDIRECT_STATUS
:型
这将仅对原始URL执行此规则。