可以在标题中修改主机

可以在标题中修改主机

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>

但我不喜欢将外部子域硬编码internhttpd.conf

问题

是否可以在重定向到 之前对执行正则表达式%{HTTP_HOST},以便old-company-name将其替换为?或者可能是类似的东西?new-company-namehttps

更新

# 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了解所有语法和细节。我不能肯定地说您可以实现您想要的目标 - 而且我不确定您为什么在这种情况下要修改标题。

相关内容