我嘗試使用從domain1.com/folder/到domain2.com/的簡單 301 重定向
但不包括domain1.com/folder/subfolder
我在 .htaccess 中使用以下代碼:
RedirectMatch 301 ^/folder/((?!subfolder).*)$ https://domain2.com/$1
但它只是將所有請求重定向,包括對子檔案夾的請求。
請幫助修復線路以使其按描述作業。謝謝!
這是 .htaccess 的完整代碼
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /folder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
</IfModule>
RedirectMatch 301 ^/folder/((?!subfolder).*)$ https://domain2.com/$1
uj5u.com熱心網友回復:
改用 mod_rewrite 試試這樣:
(注意:這假定.htaccess檔案位于檔案根目錄中。)
# /.htaccess
# Redirect all direct requests, except "subfolder"
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond $1 !^subfolder($|/)
RewriteRule ^folder/(.*) https://domain2.com/$1 [R=301,L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /folder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
</IfModule>
重定向在重寫到您的前端控制器之前進行,這一點很重要。
您需要確保在測驗之前清除瀏覽器快取,并使用 302(臨時)重定向進行測驗以避免潛在的快取問題。
更新:
是的,
/folder有它自己的 .htaccess(這是我一直在作業的檔案)。是的,/folder是安裝 Wordpress 的地方。
在這種情況下,您需要將上述重定向更改為如下所示(否則它不會做任何事情):
# /folder/.htaccess
# Redirect all direct requests, except "subfolder"
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond $1 !^subfolder($|/)
RewriteRule (.*) https://domain2.com/$1 [R=301,L]
基本上,您需要folder/從與 URL 路徑匹配的正則運算式的開頭洗掉。RewriteRule 模式匹配的 URL 路徑是相對于包含.htaccess檔案的目錄的。
添加對REDIRECT_STATUSenv var 的檢查是為了確保subfolder不會重定向對 WP 前端控制器的重寫請求(當被請求時)。
您還可以“簡化”隨后的 WordPress 指令(盡管如果這些指令包含在# BEGIN WordPress/# END WordPress注釋標記中,那么您應該保持原樣,因為它們由 WordPress 維護)。例如:
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
該RewriteBase指令不是必需的。<IfModule>包裝器也不是。(但正如我上面所說,只有在您手動編碼.htaccess并且不讓 WordPress 維護它時才更改此設定。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/465402.html
上一篇:GolangAPI的HTTPS
