Apache-2.4
僅將文件根目錄和特定頁面重定向到另一個域
可能聽起來令人困惑,但我想要實現的是:
- 如果使用者訪問:
www.mydomain.com
(有或沒有www.
)將它們轉移到:
www.myotherdomain.com/welcome-old-users
2. 同時,我想實現這一點:如果他們訪問:
www.domain.com/about-us
(有或沒有www.
)將它們轉移到:
www.myotherdomain.com/about-us
我到目前為止是這樣的:
<IfModule mod_rewrite.c> RewriteEngine On # To redirect all users to HTTPS RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Redirects all www to non-www RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteBase / RewriteCond %{HTTP_HOST} (^www.)?mydomain.com/?$ [NC] RewriteRule ^(.*)$ https://myotherdomain.com/$1 [R=301,L]
這適用於第 2 點
任何幫助表示讚賞!
RewriteCond %{HTTP_HOST} (^www.)?mydomain.com/?$ [NC] RewriteRule ^(.*)$ https://myotherdomain.com/$1 [R=301,L]
這適用於第 2 點
但是這樣做的“問題”是它重定向了所有內容,而不僅僅是
/about-us
,這就是您所說的第 2 點的要求。
(^www.)?mydomain.com/?$
- 您將字元串開頭的錨點 (^
) 放在了錯誤的位置。這將匹配任何以“mydomain.com”結尾的主機名(包括任何共享相同後綴的子域和域)。標Host
頭永遠不會以斜線結尾,因此/?
結尾的 是多餘的。(並且
RewriteBase
這裡不需要該指令。)您需要在文件頂部的現有指令之前
.htaccess
執行以下操作:# Redirect "/" (document root) only RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com [NC] RewriteRule ^$ https://www.myotherdomain.com/welcome-old-users [R=302,L] # Redirect "/about-us" only RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com [NC] RewriteRule ^about-us$ https://www.myotherdomain.com/$0 [R=302,L]
您需要在測試前清除記憶體。使用 302(臨時)重定向進行測試,並確保在更改為 301(永久)重定向之前它可以正常工作 - 如果這是有意的話。