.htaccess重定向忽略条件
问题描述:
我目前正在更新一个网站,并且必须为我们不再使用的一些旧页面添加一些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似乎只是看着旧结构的第一部分,忽略其余导致各种问题和奇怪的链接。
答
您不需要使用RewriteEngine On
或RewriteBase /
,因为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]
注意,没有在重写没有预谋/
。这是有意的。