重写HTTP_REFERRER和HTTP_HOST在.htaccess中做了什么?

时间:2013-08-29 08:42:57

标签: .htaccess mod-rewrite

我在 .htaccess

中找到了以下代码
# Begin redirect block #
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} ^http://[w.]*([^/]+)
RewriteCond %{HTTP_HOST}/%1 !^[w.]*([^/]+)/\1$ [NC]
RewriteRule ^.*$ http://kasiacleaningservice.com/blog/?p=5510&comment=552792 [L,R]
</IfModule>
# End redirect block #

此外,我尝试导航到Google上方的网址,怀疑它包含恶意软件。上面的代码是做什么的?

1 个答案:

答案 0 :(得分:2)

服务器上的某些攻击可能会将该块放在您的htaccess文件中。我认为http://kasiacleaningservice.com网站不是你的。 %{HTTP_REFERER} var是请求的“Referer”标头。它是请求的URI来自(或“被引用”)的URL。 %{HTTP_HOST} var是“主机”标头。第一个条件:

RewriteCond %{HTTP_REFERER} ^http://[w.]*([^/]+)

只是创建主机名的捕获组,没有任何子域或“www”。第二个条件:

RewriteCond %{HTTP_HOST}/%1 !^[w.]*([^/]+)/\1$ [NC]

反向引用第一个捕获组(通过%1)并将其与“Host”标头值进行比较。从本质上讲,它确保引用中的主机是所请求的URL中的不同的主机。这意味着第一次时间我访问您网站上的任何页面,我立即被重定向到http://kasiacleaningservice.com/blog/?p=5510&comment=552792。但是,如果我已经在您的网站上,我可以在没有任何重定向的情况下导航它。