如何将规则从 .htaccess 移动到 httpd 主服务器配置文件?

如何将规则从 .htaccess 移动到 httpd 主服务器配置文件?

我的文件中有大约 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"

相关内容