Httpd
可以在標頭中修改主機
每當有人訪問
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}
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]