我尝试使用.htaccess
重定向到410。
我在Google索引中有数千个虚假链接
它们都以
开头http://example.com/?96ncajmj8anbvaaxomq
http://example.com/?6amdrg-bzzjna2ydgwj
http://example.com/?2ecpioijpxgsne_n1
http://example.com/?eamppu-smk2p3pjyvf0yn
使用RewriteCond %{QUERY_STRING}
将所有此类地址重定向到410
(均以?
开头)
RewriteCond% {QUERY_STRING} ^?
无效
在Apache日志中,我只能看到:
my_IP - - [24/Jan/2019:10:45:32 +0100] "GET /?fbdffdgfdgfdgdfg HTTP/1.1" 200 48308 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
.htaccess中还有一个规则
RewriteEngone on
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=410,L]
锁定此虚假链接
/index.php?01qpwrjvmr8kjv7e8
/index.php?01gkby5wbr-dlvqq
它正常工作
还有一条规则
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
答案 0 :(得分:1)
这应该满足您的要求:
RewriteEngone on
RewriteCond %{QUERY_STRING} ^[-a-z0-9_]+$
RewriteRule ^/?$ [R=410,END]
该规则在http服务器主机配置(您应该首选)或动态配置文件中也应同样起作用。如果您确实需要使用这些动态文件之一,请注意,主机配置中完全启用了它的解释功能,并且该解释位于主机的DOCUMENT_ROOT
文件夹中。
如果使用上述规则收到内部服务器错误(http状态500),则可能是您使用了旧版本的apache http服务器。在这种情况下,您会在不受支持的[END]
标志上看到明确的提示,然后尝试使用旧的[L]
标志,在这里它可能会起作用,尽管这在一定程度上取决于您的设置。