2013-04-23 77 views
2

我在我的htaccess文件中使用301重定向規則將一些舊網址重定向到新網址。然而,在一些重定向中,舊的文件名被追加到新的url上,所以我得到了404頁的錯誤。301在htaccess中重定向將舊文件名追加到新網址

例如,這是我的重寫規則

Redirect 301 /mtrx/motion-control/ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 

但顯示出來的是頁面

http://www.zerolinegolf.com/golf-mtrx-for-the-golfermotion-control 

這是整個的.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] 
</IfModule> 

# END WordPress 

#REDIRECTS 

Redirect 301 /videos/ http://www.zerolinegolf.com/videos-2 
Redirect 301 /press-releases-2/ http://www.zerolinegolf.com/media 
Redirect 301 /mtrx/motion-control/ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 
Redirect 301 /mtrx/pelvis-power/ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 
Redirect 301 /mtrx/mtrx-score/ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 
Redirect 301 /mtrx/recommended-drills/ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 
Redirect 301 /mtrx/ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 

感謝幫助。

回答

5

它看起來像mod_alias中和mod_rewrite的可能互相產生干擾,可能本身。

請記住,Redirect指令將兩個路徑節點鏈接在一起。所以,如果你有,說:

Redirect 301 /mtrx/ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 

該聲明還花費:/mtrx/foo/bar/並重定向到http://www.zerolinegolf.com/golf-mtrx-for-the-golferfoo/bar/

您應該切換到使用RedirectMatchRewriteRule

對於前者:

RedirectMatch 301 ^/videos/?$ http://www.zerolinegolf.com/videos-2 
RedirectMatch 301 ^/press-releases-2/?$ http://www.zerolinegolf.com/media 
RedirectMatch 301 ^/mtrx/motion-control/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 
RedirectMatch 301 ^/mtrx/pelvis-power/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 
RedirectMatch 301 ^/mtrx/mtrx-score/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 
RedirectMatch 301 ^/mtrx/recommended-drills/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 
RedirectMatch 301 ^/mtrx/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer 

mod_rewrite的,你必須將這些規則之前你的WordPress規則

RewriteRule ^/?videos/?$ http://www.zerolinegolf.com/videos-2 [L,R=301] 
RewriteRule ^/?press-releases-2/?$ http://www.zerolinegolf.com/media [L,R=301] 
RewriteRule ^/?mtrx/motion-control/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer [L,R=301] 
RewriteRule ^/?mtrx/pelvis-power/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer [L,R=301] 
RewriteRule ^/?mtrx/mtrx-score/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer [L,R=301] 
RewriteRule ^/?mtrx/recommended-drills/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer [L,R=301] 
RewriteRule ^/?mtrx/?$ http://www.zerolinegolf.com/golf-mtrx-for-the-golfer [L,R=301] 
+0

我用第一套規則,它完美地工作!感謝您的幫助 – 2013-04-25 00:56:35

相關問題