.htaccess如何使用查询字符串重定向伪造链接

时间:2019-01-24 07:41:20

标签: .htaccess mod-rewrite

我尝试使用.htaccess重定向到410。

我在Google索引中有数千个虚假链接

它们都以

开头
http://example.com/?96ncajmj​8anbvaaxomq    
http://example.com/?6amdrg-b​zzjna2ydgwj    
http://example.com/?2ecpioij​pxgsne_n1  
http://example.com/?eamppu-s​mk2p3pjyvf0yn  

使用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

1 个答案:

答案 0 :(得分:1)

这应该满足您的要求:

RewriteEngone on
RewriteCond %{QUERY_STRING} ^[-a-z0-9_]+$
RewriteRule ^/?$ [R=410,END]

该规则在http服务器主机配置(您应该首选)或动态配置文件中也应同样起作用。如果您确实需要使用这些动态文件之一,请注意,主机配置中完全启用了它的解释功能,并且该解释位于主机的DOCUMENT_ROOT文件夹中。

如果使用上述规则收到内部服务器错误(http状态500),则可能是您使用了旧版本的apache http服务器。在这种情况下,您会在不受支持的[END]标志上看到明确的提示,然后尝试使用旧的[L]标志,在这里它可能会起作用,尽管这在一定程度上取决于您的设置。