Dot-Htaccess
Apache htaccess 重定向?
我有一個客戶,他有一個類似的域
this-site.com
,並且thissite.com
沒有深入研究其背後的整個問題,我們需要將任何傳入請求重定向到任何*.this-site.com
匹配的*.thissite.com
.例如:
subdomain1.this-site.com -> subdomain1.thissite.com subdomain2.this-site.com -> subdomain2.thissite.com subdomain3.this-site.com -> subdomain3.thissite.com
有沒有辦法保留 URL 的第一部分並將其傳遞給第二個域?
假設所有這些子域都解析到文件系統上的同一個位置,然後…重定向
this-site.com
到,thisstite.com
同時保留 URL 的子域和其餘部分(即 URL 路徑和查詢字元串),您可以使用 mod_rewrite 執行以下操作,在.htaccess
您網站根目錄中的文件頂部附近:RewriteEngine On RewriteCond %{HTTP_HOST} ^([^.]+)\.this-site\.com [NC] RewriteRule ^ https://%1.thissite.com%{REQUEST_URI} [R=302,L]
我假設
HTTPS
. 這重定向https://<subdomain>.this-site.com/<url-path>[?<query-string>]
到https://<subdomain>.thissite.com/<url-path>?<query-string>
.這
%1
是對最後匹配的CondPattern中第一個擷取的組的反向引用。換句話說,這與請求的主機名中的子域(([^.]+)
前面的正則表達式中的一部分)匹配。另請注意:
- 這將重定向所有子域,包括
www
.- 但它不會重定向子子域,例如。
subsubdomain.subdomain1.thissite.com
不會被重定向。- 而且它只會重定向子域,所以它不會重定向
this-site.com
。這也是一個臨時的 (302) 重定向。如果這是永久性的,則將 302 更改為 301,但前提是您確認它工作正常。(301 被瀏覽器硬記憶體,因此會使測試出現問題。)