Dot-Htaccess

Apache htaccess 重定向?

  • January 25, 2018

我有一個客戶,他有一個類似的域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 被瀏覽器硬記憶體,因此會使測試出現問題。)

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