为了解决安全问题,我需要向我们所有的虚拟主机配置添加一些重写规则。
除了更新每个虚拟主机声明之外,是否还有其他选项可以为所有虚拟主机声明添加重写规则?
更新:
参考文档状态: 请注意,虚拟主机不会继承重写配置。这意味着您需要为每个要使用重写规则的虚拟主机设置 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,但如果不知道需要进行的更改的具体细节,我们无法推荐太多方法。