我的文件中有大约 500 条RewriteCond %{HTTP_REFERER}
规则.htaccess
用于阻止垃圾邮件引荐网站。
规则如下:
RewriteCond %{HTTP_REFERER} hol\.es [NC,OR]
RewriteCond %{HTTP_REFERER} hys\.cz [NC,OR]
RewriteCond %{HTTP_REFERER} zzz\.com\.ua [NC,OR]
RewriteCond %{HTTP_REFERER} hypersito\.com [NC,OR]
RewriteCond %{HTTP_REFERER} tode\.cz [NC,OR]
and many more similar lines
现在由于性能问题,我建议将这些规则移至 httpd 主服务器配置文件。
我不是这个领域的专家,所以有人可以指导我如何做到这一点吗?
我可以访问 WHM 和 shell。
我在网上搜索后发现该文件位于/etc/httpd/conf
目录中。当我打开该httpd.conf
文件时,它包含 300 多行。
我应该RewriteCond %{HTTP_REFERER}
在文件的哪里添加这些规则httpd.conf
以及如何添加?
答案1
mod_rewrite 在服务器配置(或虚拟主机)中直接使用时,其行为与.htaccess
(或目录语境)。
然而,这些特定的指令应该在服务器配置中不经改变地运行。
这些指令在服务器配置中的什么位置并不重要,只要你不把它们放在里面另一个指令组。寻找指令中的逻辑空白。阻塞指令应尽可能早地放在主服务器配置之后。(但是,如前所述,顺序不一定重要,因为 Apache 模块无论如何都是独立运行的,并且按照预定义的顺序运行。)
但是,我不会将这些指令直接放在主配置文件中,而是会为这些指令创建一个单独的配置文件(例如block-referer.conf
),并使用指令将此文件包含在主配置中Include
。例如:
Include /usr/local/apache2/conf/block-referer.conf
参考:
https://httpd.apache.org/docs/2.4/mod/core.html#include
更新:由于您似乎正在使用 cPanel,因此最好将这些指令添加到现有的包含文件中,因为如警告所述httpd.conf
:
对 Apache 配置文件的直接修改可能会在随后重新生成配置文件时丢失。
:
还可以将自定义指令添加到由此 httpd.conf 加载的各种“包含”文件中
看一下以下两个包含文件:
Include "/usr/local/apache/conf/includes/pre_virtualhost_global.conf" Include "/usr/local/apache/conf/includes/pre_virtualhost_2.conf"