.htaccess重定向忽略标准

时间:2015-03-31 12:55:49

标签: .htaccess mod-rewrite redirect

我目前正在更新网站,并且必须为我们不再使用的某些旧网页添加301重定向。我的代码是;

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似乎只是看旧结构的第一部分而忽略其余部分导致各种问题和奇怪的链接。

1 个答案:

答案 0 :(得分:0)

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

但是,我会使用Rewrite来做我们想要做的事情。它更强大,如果需要,您可以使用正则表达式更轻松地控制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]

请注意,重写中没有前置/。这是故意的。