Httpd

可以在標頭中修改主機

  • February 19, 2014

每當有人訪問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}so進行正則表達式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

讓我們讓 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]

引用自:https://serverfault.com/questions/575681