2015-03-31 225 views
0

我目前正在更新一個網站,並且必須爲我們不再使用的一些舊頁面添加一些301重定向。我的代碼是;.htaccess重定向忽略條件

RewriteEngine On 
RewriteBase/
Redirect 301 /old-folder/old-file.html http://www.newsite.com/new-folder/ 

不幸的是,重定向似乎忽略HTML文件的一部分,所以當我參觀古老的鏈接,我會重定向到

http://www.newsite.com/new-folder/old-file.html 

凡是第一個孩子被忽略後,當我嘗試重定向使用此代碼的更復雜的網址;

Redirect 301 /old-parent-folder/old-child-folder/old-page.html http://www.newsite.com/new-folder/new-page.html 

我然後被重定向到一個破碎的網址,如;

http://www.newsite.comold-child-folder/old-page.html 

這不是拼寫錯誤,在.com之後斜槓被完全忽略。

我希望你可以在這裏看到問題,htaccess似乎只是看着舊結構的第一部分,忽略其餘導致各種問題和奇怪的鏈接。

回答

0

您不需要使用RewriteEngine OnRewriteBase /,因爲Redirect指令不是重寫。

但是,我會用Rewrite來做我們想做的事情。它功能更強大,如果需要,可以使用regex更輕鬆地控制URI。

而不是這個。

Redirect 301 /old-folder/old-file.html http://www.newsite.com/new-folder/ 

使用此

RewriteEngine On 
RewriteRule ^old-folder/old-file.html http://www.newsite.com/new-folder/ [R=301,L] 

注意,沒有在重寫沒有預謀/。這是有意的。