2011-12-18 64 views
1

我正在從Movable Type遷移一個相當大的(5000+帖子)到WordPress。在這一點上,我一直試圖確保一旦我們開始使用新網站,舊的郵政網址將不會成爲404的結果。Movable Type to Wordpress遷移:htaccess重定向問題

舊的URL模式看起來像這樣:

http://domain.com/site/category/category/post_name.php

而且我想重定向那些

http://domain.com/category/category/post_name/

不過,我已經試了又試與htaccess的重定向,不管我做什麼,它要麼失敗,要麼產生500錯誤。我懷疑我錯過了一些愚蠢的東西,或者有可能存在衝突的規則,我希望有人比我更瞭解htaccess可以幫助我走正確的道路。

這就是我現在所擁有的。規則重定向/網站/到根目錄工作得很好,但其他兩個沒有任何影響,無論是單獨或一起。我嘗試了兩種方法來查看是否可以重定向某個特定的帖子,然後以這種方式手動執行該操作,但它仍然無效。

RewriteEngine On 

RewriteRule ^site/(.*) /$1 [NC] 
RewriteRule ^site/resources/(.*).php$ /resources/$1 [NC] 
RewriteRule ^site/resources/research/safe_urban_form_revisiting_the_relationship_b.php$ /resources/research/safe_urban_form_revisiting_the_relationship_b/ [NC] 

# 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] 
</IfModule> 

# END WordPress 

任何幫助將是非常有用的!

回答

0

您的重定向不能按預期工作的原因是.是正則表達式語法中的一個特殊字符 - 它表示「任何字符」。您需要使用類似.^等的反斜線來轉義任何特殊字符:\.

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    # Redirect old URLs with ".php" in them. 
    RewriteRule ^site/(.+)\.php$ $1/ [NC,R=301,L] 

    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

我不知道,如果你真的想在那裏RewriteRule ^site/(.*) /$1 [NC]規則,或者如果它只是測試。如果這樣做,只需在RewriteBase /聲明之後添加它即可。

+0

我其實需要站點/和特定於.php的規則,是的。這結束了工作: 'RewriteRule^site /(。+)\。php $ $ 1/[NC,R = 301,L] RewriteRule^site /(.*)/ $ 1 [NC]' 雖然它爲了正常工作,* do *需要放在'RewriteBase /'語句之後。非常感謝! – sarah 2011-12-18 20:46:09

1

看起來你可能想使用重定向是這樣的:

# Redirect /site/any/path/file.php to /any/path/file/: 
RewriteRule ^site/(.+)\.php$ $1/ [NC,R=301,L] 

另外,我想在WordPress的部分RewriteBase /線後,立即把這個作爲第一個規則。

+0

經過一番混淆後,似乎移動了事情(並正確編寫正則表達式)解決了這個問題。非常感謝! – sarah 2011-12-18 20:44:17

1

由於您將保持相同的域,爲什麼不直接忘記自己編寫重定向規則並使用重定向插件呢?在插件的幫助下定義重定向規則會容易得多。這是我每次可以遵循的策略