2015-03-31 223 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] 

注意,没有在重写没有预谋/。这是有意的。