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

我有约。 在我的.htaccess文件中使用500 RewriteCond %{HTTP_REFERER}规则来阻止垃圾邮件引用网站。

规则如下:

 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 

现在由于性能问题,我build议将这些规则移到httpd主服务器configuration文件。

我不是这个领域的专家,所以有人请指导我如何做到这一点?

我有权访问WHM和shell。

我在网上search,发现该文件驻留在/etc/httpd/conf目录中。 当我打开httpd.conf文件时,它包含300多行。

我应该在httpd.conf文件中添加这些RewriteCond %{HTTP_REFERER}规则,以及如何?

直接在服务器configuration(或虚拟主机)中使用时,mod_rewrite的行为有点不同,而不是.htaccess (或目录上下文)。

但是,这些特定的指令应该在服务器configuration中保持不变。

这些指令在服务器configuration中的位置并不重要,只要不将它们放在另一个指令组中。 寻找指令中的逻辑差距。 在主服务器configuration之后,阻塞指令应尽可能早。 (但是,正如所说,顺序不一定重要,因为Apache模块无论如何都是以预定义的顺序独立运行的。)

但是,不是直接将这些指令放在主configuration文件中,而是为这些指令(例如block-referer.conf )创build一个单独的configuration文件,并使用Include指令将此文件包含在主configuration中。 例如:

 Include /usr/local/apache2/conf/block-referer.conf 

参考:
https://httpd.apache.org/docs/2.4/mod/core.html#include


更新:因为你似乎正在使用cPanel,所以最好将这些指令添加到现有的包含文件中,因为正如httpd.conf的警告所述:

随后重新生成configuration文件时,对Apacheconfiguration文件的直接修改可能会丢失。

也可以将自定义指令添加到由此httpd.conf加载的各种“包含”文件中

看看以下两个包含文件:

 Include "/usr/local/apache/conf/includes/pre_virtualhost_global.conf" Include "/usr/local/apache/conf/includes/pre_virtualhost_2.conf"