可能修改标题中的主机

每当有人访问intern.old-company-name.example.com我希望它被redirect到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}上执行正则expression式,以便在redirect到https之前将old-company-namereplace为new-company-name ? 或者也许类似的东西?

更新

 # apachectl -S VirtualHost configuration: 10.10.10.10:443 is a NameVirtualHost default server aybcom (/etc/httpd/conf.d/ssl.conf:85) port 443 namevhost aybcom (/etc/httpd/conf.d/ssl.conf:85) Syntax OK 

我们让HTTP侦听器处理HTTP到HTTPS的行为,并将旧名称转换为由HTTPS侦听器处理的新名称行为。 (我们可以让HTTPredirect也进行名称更改,但是这样可以将所有内容保存在一个地方,使其更简单。)

所以,在你的主configuration文件中,我们会稍微调整一下原来的configuration文件:

 RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://${HTTP_HOST}$1 

然后在/etc/httpd/conf.d/ssl.conf<VirtualHost>中,我们将执行名称redirect:

 RewriteCond %{HTTP_HOST} ^([^\.]+)\.old-company-name\.example\.com$ RewriteRule ^(.*)$ https://%1.new-company-name.example.com$1 [R,L] 

修改标题可以用mod_headers完成 – 检查http://httpd.apache.org/docs/2.2/mod/mod_headers.html所有的语法和细节&#x3002; 我不能肯定地说,你可以实现你想要的 – 而且我不确定你为什么想在这种情况下修改头文件。