intern.old-company-name.example.com
我希望每当有人访问时,它都会被重定向到https://intern.new-company-name.example.com
。一种方法是
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://intern.new-company-name.example.com$1
# RewriteRule ^(.*) https://%{HTTP_HOST}$1
</IfModule>
但我不喜欢将外部子域硬编码intern
到httpd.conf
。
问题
是否可以在重定向到 之前对执行正则表达式%{HTTP_HOST}
,以便old-company-name
将其替换为?或者可能是类似的东西?new-company-name
https
更新
# apachectl -S
VirtualHost configuration:
10.10.10.10:443 is a NameVirtualHost
default server a.y.b.com (/etc/httpd/conf.d/ssl.conf:85)
port 443 namevhost a.y.b.com (/etc/httpd/conf.d/ssl.conf:85)
Syntax OK
答案1
让我们用 HTTP 侦听器处理 HTTP 到 HTTPS 的行为,用 HTTPS 侦听器处理旧名称到新名称的行为。(我们可以让 HTTP 重定向也执行名称更改,但这样可以将所有内容放在一个地方并使其更简单。)
因此,在您的主配置文件中,我们将对您的原始配置进行些许调整:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://${HTTP_HOST}$1
然后在里面<VirtualHost>
我们/etc/httpd/conf.d/ssl.conf
进行名称重定向:
RewriteCond %{HTTP_HOST} ^([^\.]+)\.old-company-name\.example\.com$
RewriteRule ^(.*)$ https://%1.new-company-name.example.com$1 [R,L]
答案2
可以使用 mod_headers 修改标题 - 检查http://httpd.apache.org/docs/2.2/mod/mod_headers.html了解所有语法和细节。我不能肯定地说您可以实现您想要的目标 - 而且我不确定您为什么在这种情况下要修改标题。