要解决安全问题,我需要添加一些重写规则到我们所有的虚拟主机configuration。
除了更新每个虚拟主机声明之外,是否有任何选项将重写规则添加到每个虚拟主机声明?
更新:
参考文档指出: 请注意,重写configuration不会被虚拟主机inheritance。 这意味着您需要为每个您希望使用重写规则的虚拟主机启用RewriteEngine on指令。
我不确定这是否意味着虚拟主机不考虑一般的重写规则。
你可以在虚拟主机configuration中使用include指令,并将你的重写规则放在不同的文件中?
您可以使用sed批量编辑您的vhostconfiguration文件:
sed -i.bak '/matchstring/ a\ include /some/where/rewrite.conf' /etc/apache2/vhosts/*.conf
每次在所有/etc/apache2/vhosts/*.conf文件中出现include /some/where/rewrite.conf后,此命令都会插入include /some/where/rewrite.conf行。
重写必须进入虚拟主机,还是可以将重写规则放在主httpd.conf文件中? 重写那里适用于所有请求,不pipe它们适用于哪个虚拟主机。
如果他们必须进入虚拟主机,所有的重写都完全相同,还是依赖于vhost / ServerName / ServerAlias ? 如果重写在每个文件中完全相同,则可以使用sed -i修改任意数量的文件。
如果重写需要在每个文件中有所不同(或者如果虚拟主机都是不同的),则可能没有简单的方法。 您可能能够在bash循环中再次使用sed -i来查看文件的名称,但不知道所需更改的具体细节,因此我们不能推荐这些更改。