向大量 vhost 添加 apache 重写规则

向大量 vhost 添加 apache 重写规则

为了解决安全问题,我需要向我们所有的虚拟主机配置添加一些重写规则。

除了更新每个虚拟主机声明之外,是否还有其他选项可以为所有虚拟主机声明添加重写规则?

更新:

参考文档状态: 请注意,虚拟主机不会继承重写配置。这意味着您需要为每个要使用重写规则的虚拟主机设置 RewriteEngine on 指令。

我不确定这是否意味着虚拟主机不考虑一般的重写规则。

答案1

您可以include在 vhost 配置中使用指令并将重写规则放在单独的文件中吗?

您可以使用 sed 批量编辑您的 vhost 配置文件:

sed -i.bak '/matchstring/ a\
include /some/where/rewrite.conf' /etc/apache2/vhosts/*.conf

此命令将在所有 /etc/apache2/vhosts/*.conf 文件中include /some/where/rewrite.conf每次出现后插入行。matchstring

答案2

必须重写吗里面虚拟主机,或者您可以将重写规则放在主httpd.conf文件中吗?那里的重写适用于所有请求,无论它们适用于哪个虚拟主机。

如果它们必须进入虚拟主机,那么所有重写是否完全相同,还是它们依赖于虚拟主机/ ServerName/ ?如果每个文件中的重写完全相同,则ServerAlias可以用来修改任意数量的文件。sed -i

如果每个文件的重写都需要不同(或者如果虚拟主机都不同),那么可能没有简单的方法。您可能能够sed -i在 bash 循环中对文件名称使用 again,但如果不知道需要进行的更改的具体细节,我们无法推荐太多方法。

相关内容