2012-04-20 61 views
0

对不起,长标题。我目前正在编写一些301重定向,并使用mod rewrite(Apache)来处理它们。目前我所尝试过的两个301中只有一个正在工作。这里是代码:301重定向,一个重写工作,另一个不工作

#301 REDIRECTS 
RewriteEngine On 
RewriteRule ^Fox-and-Frank-home\.html$ http://www.mydomain.co.uk/contact_us.php [R=301] 
RewriteRule ^about\.html$ http://www.domain.com/about/ [R=301,L] 

about.html正确重定向,但Fox-and-Frank-home.html不。我已经尝试了其他名称,其他网址,但它不起作用。任何帮助将不胜感激。

编辑

我得到这在一个完全裸露的.htaccess文件工作。 301重定向是否需要在其他所有方面处于最高位置?

+0

这两个文件都位于webroot上,对不对? – Seybsen 2012-04-20 20:55:16

+0

我没有创建任何文件。目标是如果用户被链接,它会正确重定向。我对htaccess和这种东西一般知之甚少。这可能不是我正在采取的最佳方法。 – 2012-04-20 21:00:38

回答

1

您的福克斯和弗兰克重写中没有L(最后一个)标志,因此其他规则可能会被处理,并且定义在.htaccess(您需要使用END标志)。

尝试将其更改为:

RewriteRule ^Fox-and-Frank-home\.html$ http://www.mydomain.co.uk/contact-us.php [NC,R=301,L] 

其中:

  • NC使得它不区分大小写的检查(所以狐狸和坦率的家庭会 重定向)
  • R = 301是301重定向(虽然你可以把R 和301假设我总是亲自指定它)
  • L告诉 mod_rewrite停止处理进一步的规则(但其中的 .htaccess.您可能需要使用END代替 - 请参阅http://httpd.apache.org/docs/current/rewrite/flags.html#flag_l)。

问候。

+1

谢谢。写得很好:)。 – 2012-04-21 17:59:23