最近我一直在我的网站的日志中find一些引荐垃圾邮件。 为了阻止这个(因为它非常烦人,也污染我的统计),我想阻止来自某些引用域的请求。 可以find很多文章,build议在网站的.htaccess文件中放入以下(或类似的东西):
RewriteEngine On RewriteCond %{HTTP_REFERER} example\.com [NC] RewriteRule .* - [F]
这工作得很好,但是,我想将其移到Apacheconfiguration,以便将此重写规则应用于服务器上托pipe的所有网站。 我也读过这对性能更好,因为必须为每个请求parsing.htaccess文件,而Apacheconfiguration只加载一次。
我的服务器在Ubuntu上运行,所以我创build了一个新的.conf文件:/etc/apache2/conf-available/block-referrer-spam.conf,其内容与上面的.htaccess代码片段完全相同。 我在启用conf的目录中创build了一个符号链接(使用sudo a2enmod block-referer-spam )并重新加载了Apacheconfiguration( sudo service apache2 reload )。 但是,与使用.htaccess不同,Apache不会阻止请求(返回403)。
我想我可能会忽略简单的东西,所以任何帮助表示赞赏。
重写configuration不会被虚拟主机inheritance。 为了“inheritance”vHostconfiguration中的指令,每个vHostconfiguration需要:
RewriteEngine on RewriteOptions Inherit
请参阅以下位于mod_rewrite模块下的Apache讨论:
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
在任何情况下,如果您有权访问每个vHost的site.conf文件,则应该将这些文件用于“站点”指令,而不需要启用.htaccess文件。
另外,我假设你已经在你的apache2.conf文件中“包含”conf-enabled / *。conf
一个诀窍是将一个.htaccess文件放在vHosts所在的目录之上。
例如,如果您的vHost网站位于/var/www/vhosts/.../请将.htaccess文件放在/var/www/vhosts/.htaccess 。 由于Apache按目录级别的顺序读取.htaccess文件,因此它将在个别的.htaccess文件之前被读取。