我的一个网站被黑了,然后成千上万的网址出现了。
我想编辑我的htaccess,以便所有有/?x=的URL都被重定向到没有查询字符串的页面。
该站点是word press站点,因此无法用查询字符串重定向所有URL或站点停止正常工作。
基本上我需要:
www.example.com/?x=spamurl
重定向到
www.example.com
和包含?x=的任何深度页
www.example.com/category/?x=spamurl
重定向到
www.example.com/category/
这是我当前的htaccess
# 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]
RewriteCond %{QUERY_STRING} x=
RewriteRule ^$ http://www.example.com/? [R=301,L]
</IfModule>
# END WordPress
正如您所看到的,我已经设法将主url后面带有?x=的url重定向到主页面,但是当?x=显示在类别页面后面时,我不知道如何做到这一点。
有没有编码可以重定向包括?x=的所有URL到一个404页,而不会引起wordpress文件的问题?
多谢
斯科特
您需要将重定向规则移到wordpress规则之前。您还需要匹配任何传入的URI:
RewriteCond %{QUERY_STRING} ^(.*)(^|&)x=[^&]+(.*)$
RewriteRule ^(.*)$ /$1?%1%3 [R=301,L]
# BEGIN WordPress
etc...
这将只删除x=something参数,如果您在之前或之后有其他参数,则保留这些参数。