问题
我正在尝试在 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。
默认情况下,mod_rewrite 配置是正常继承规则的例外;虚拟主机不从服务器配置继承。
查看RewriteOptions的继承标志以获取您想要的行为。