问题
我试图在 Apache 的全局服务器配置中制定 mod_rewrite 规则,并使其对所有虚拟主机生效。文档当然表明这样做完全没问题。但是,我无论如何也找不到任何东西可以真正重写。即使使用如下所示的简单配置:
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteRule .* https://www.google.com
但是,如果我将上述代码移到其中一个虚拟服务器中,它就可以正常工作。(对于该域)但我希望将其输入到服务器配置中,并使其对每个托管网站生效。这真的可能吗?我是否遗漏了一些细节?除此之外,是否有一个好的方法可以排除可能出现的问题?
背景:
我正在尝试制作一个 503 维护页面,供系统中断时使用。目前,我通过 mod_alias 和 RedirectMatch 规则执行此操作。RedirectMatch 503 ^((?!^(/error/503_error.html)|(/images/503_error.jpg)$).)*$
这在服务器配置 (httpd.conf) 中运行良好,并且在启用后适用于所有虚拟主机。
我想用 mod_rewrite 来代替它,这样我就可以免除一些内部 IP 的重定向。本质上,这样系统就可以在内部进行测试,而无需向其他所有人开放。
目前运行的是最新的 RHEL 5.10 和原装 Apache 2.2.3。
答案1
默认情况下,mod_rewrite 配置是正常继承规则的一个例外;虚拟主机不会从服务器配置继承。
查看继承标志重写选项以获得您想要的行为。