2017-10-10 53 views
2

我將所有網址從www.example.com/forums重定向到www.example.com/blog/從文件夾重定向中排除URL

所以我在做.htaccess這條規則:

RewriteRule ^forums blog/$1 [L,R=301] 

的事情是,我要排除的網址有些還與forums/開始,他們會重定向至其他/blog特定的URL。例如,forums/8/some-made-up-word-here-1681/studies/some-made-up-studies

眼下,它重定向到/blog喜歡與forum/

回答

1

開始你只需要首先包括更具體的重定向,更一般的規則之前的所有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在原始指令是多餘。

+0

謝謝,之前我嘗試你的代碼,我想提一提,我也重定向/論壇沒有正斜槓/blog/...not只/論壇/,並遵循它 – Ron

+0

是的,這是確定的,模式'^論壇/?(.*)'也只會匹配'/ forums'。 '?'使前面的斜槓可選。 – MrWhite

+0

對不起,但我需要遵循論壇的所有網址/重定向到/ blog/only(無尾),除了我提到的那個。現在你的代碼,任何後續/論壇帶來404頁,因爲它轉發到/博客/ same-following-content/ – Ron

相關問題