我想將所有訪問者重定向到我的 WordPress 網站,但/cy/
子目錄中頁面的可用翻譯除外:
/cy/
所以例如
https://myoldomain.co.uk/cy/partners/
沒有被重定向但
https://myoldomain.co.uk/partners/
https://myoldomain.co.uk/
被重定向。
我已經嘗試了很多,這個可以在在線測驗器中作業,但在實踐中卻不行——包括那些域在內的所有域/cy/
都被重定向。
RewriteBase /
RewriteCond %{HTTP_HOST} myoldomain\.co.uk
RewriteCond %{REQUEST_URI} !^/(cy|cy/.*)$
RewriteRule ^(.*)$ https://mynewdomain\.co.uk/$1 [R=301,L]
有什么我想念的想法嗎?
uj5u.com熱心網友回復:
RewriteCond %{HTTP_HOST} myoldomain\.co.uk RewriteCond %{REQUEST_URI} !^/(cy|cy/.*)$ RewriteRule ^(.*)$ https://mynewdomain\.co.uk/$1 [R=301,L]
如果您使用的是 WordPress,那么您稍后在檔案中有一個前端控制器模式,它將所有非檔案重寫為index.php
(WP 前端控制器)。在重寫引擎的第二遍/index.php
期間,顯然不會/cy...
發生重定向。但這應該在重定向中可見。
您需要確保上述重定向僅適用于來自客戶端的初始請求,而不適用于重寫的請求。您可以通過檢查REDIRECT_STATUS
環境變數(在初始請求中為空)來執行此操作。
例如:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} (^|\.)myoldomain\.co\.uk [NC]
RewriteCond %{REQUEST_URI} !^/(cy|cy/.*)$
RewriteRule ^(.*)$ https://mynewdomain.co.uk/$1 [R=301,L]
這需要靠近檔案頂部,在WP 前端控制器模式之前。
您需要在測驗前清除瀏覽器快取。最好使用 302(臨時)重定向進行測驗,以避免潛在的快取問題。
uj5u.com熱心網友回復:
這可能不漂亮,但似乎從重定向中排除 wp-login.php 和 wp 管理區域。
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} (^|\.)myoldomain\.co\.uk [NC]
RewriteCond %{REQUEST_URI} !^/(cy|cy/.*)$
RewriteCond %{REQUEST_URI} !^/(wp-admin|wp-admin/.*)$
RewriteCond %{REQUEST_URI} !^/(wp-includes|wp-includes/.*)$
RewriteCond %{REQUEST_URI} !^/(wp-content|wp-content/.*)$
RewriteCond %{REQUEST_URI} !^/wp-login.php
RewriteRule ^(.*)$ https://mynewdomain.co.uk/$1 [R=301,L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/533099.html