2012-12-15 46 views
0

我將約38個網站從Joomla移動到WordPress。.htaccess + wordpress,多目錄重定向

我想保持相同的鏈接結構,因爲SEO。不幸的是,最後一名開發者對他們鏈接的構造方式不在意,所以我有一些古怪的要求來完成。

即有時他們的博客是index.php/blog-4,同時index.php/blog和index.php/blog-5。

在WordPress,我做了永久鏈接是

的index.php /博客-5 /%postname%

我以前從來沒有編輯的.htaccess,但我想要做的是重定向任何去

/博客/ * - > /博客-5/*

/博客-4/* - > /博客-5/*

我會怎麼寫完成這個?

編輯

我在實施邁克爾的回答麻煩。這是我的.htaccess的外觀。我試圖把它放在內外。

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 


RewriteCond %{REQUEST_URI} !^/blog-5 
RewriteRule ^blog(-.+)?/(.*) blog-5/$2 [L,R=301] 

</IfModule> 

# END WordPress 

回答

2

這是一個相當簡單的RewriteRule。使用表達式(-4)?可以選擇匹配-4,並將其重定向到/blog-5以及請求/blog//之後的第二個(.*)組捕獲其他所有內容到$2

RewriteEngine On 
RewriteRule ^blog(-4)?/(.*) blog-5/$2 [L] 

上面將做一個無聲的內部重寫。如果您確實想要重定向並讓瀏覽器顯示新網址,請將[L]更改爲[L,R=301]

注意:實現blog-4可能是一個變量名,使用(-.+)?來匹配任何內容。但是,你也需要一個RewriteCond所以不匹配blog-5

RewriteCond %{REQUEST_URI} !^/blog-5 
RewriteRule ^blog(-.+)?/(.*) blog-5/$2 [L] 
+0

喜邁克爾,爲快速解答感謝。這是有道理的。我嘗試添加這個,雖然我沒有看到重定向發生。這可能是因爲我在.htaccess文件中編寫它的方式。我用htaccess文件更新了這個問題。思考非常感謝 –

+0

@StepanParunashvili對不起,我錯過了你的評論,不知道爲什麼我沒有看到通知。它看起來像'重寫規則。/index.php'可能首先被匹配。註釋掉這條線來測試新規則。可能您需要將其添加回_last_規則。 –

+0

@StepanParunashvili我看你打上再次接受了,所以我希望摸索出適合你。 –