開始你只需要首先包括更具體的重定向,更一般的規則之前的所有URL。例如:
RewriteEngine On
# Specific redirects
RewriteRule ^forums/8/some-made-up-word-here-1681 /studies/some-made-up-studies [R,L]
# Redirect all other URLs that start /forums
RewriteRule ^forums/?(.*) /blog/$1 [R,L]
我還修改了現有的指令重定向到/forums/<something>
/blog/<something>
,我以爲或許是初衷,因爲你是在替代使用$1
反向引用,但沒有一個捕獲組在RewriteRule
模式。您的原始指令將重定向/forums/<something>
至/blog/
。
我還在替代品中包含了一個斜槓前綴。這是重定向所必需的,但您也可以設置RewriteBase
,在這種情況下,您不需要執行此操作。
在測試之前,您將需要清除瀏覽器緩存,因爲早期的catch-all 301將被瀏覽器強制緩存。出於這個原因,爲了避免緩存問題,使用臨時302來測試通常更容易。只有在您確認這項工作正常後,才能將上述臨時重定向更改爲301。
UPDATE:要重定向開始/forums
到/blog/
所有URL,而不復制的URL的其餘部分,然後更改最後指令爲:
# Redirect all other URLs that start /forums
RewriteRule ^forums /blog/ [R,L]
基本上,$1
在原始指令是多餘。
謝謝,之前我嘗試你的代碼,我想提一提,我也重定向/論壇沒有正斜槓/blog/...not只/論壇/,並遵循它 – Ron
是的,這是確定的,模式'^論壇/?(.*)'也只會匹配'/ forums'。 '?'使前面的斜槓可選。 – MrWhite
對不起,但我需要遵循論壇的所有網址/重定向到/ blog/only(無尾),除了我提到的那個。現在你的代碼,任何後續/論壇帶來404頁,因爲它轉發到/博客/ same-following-content/ – Ron