我有一個 maindomain.com
,其中包含一個網站,這裡的一些頁面應該暫時重定向到我的子網域 tmp.maindomain.com
。
所以我使用了這個重定向,它重定向到 tmp.maindomain.com
並且我得到一個無限循環重定向到 tmp.maindomain.com
:
redirect 301 /mypage.php https://tmp.maindomain.com/mypage.php
我的目標是,如果任何用戶嘗試訪問https://www.maindomain.com/mypage.php
或https://maindomain.com/mypage.php
他應該被重定向302 到https://tmp .maindomain.com/mypage.php
。
謝謝你們的幫忙。
P粉5936497152024-04-05 13:03:26
如果子域和主域指向相同位置(或後者的子目錄),則會出現無限迴圈。
在這種情況下,您將需要使用 mod_rewrite(而不是 mod_alias)並明確檢查請求的主機名稱。
但您也使用了 301 永久重定向。您需要使用 302 來代替。 301由瀏覽器持久緩存,因此在測試之前需要確保清除所有緩存。
在子網域的 .htaccess
檔案的頂部、任何現有的 mod_rewrite 指令之前嘗試以下操作。
RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?maindomain\.com [NC] RewriteRule ^mypage\.php$ https://tmp.maindomain.com/rrreee [R,L]
請注意,RewriteRule
模式(第一個參數)匹配的 URL 路徑不以斜線開頭(與 mod_alias Redirect
不同)指令)。
$0
反向引用包含與整個 RewriteRule
模式 相符的 URL 路徑。 IE。本例中為 mypage.php
。這只是節省了重複,因為您重新導向到目標處的相同 URL 路徑。
這預設為 302 暫時重定向。