.htaccess 301重定向单页

时间:2009-09-14 11:47:56

标签: php .htaccess seo http-status-code-301

网站重新设计后,我有几页需要重定向。一切都停留在同一个域上,只有一些东西被重新组织和/或重命名。它们的形式如下:

/contact.php

现在是:

/contact-us.php

使用.htaccess文件,我添加了这一行,这是我最常推荐的那一行:

RedirectMatch 301 /contact.php /contact-us.php

这很好 - 它完成了工作 - 问题是,它还重定向:

  • /team1/contact.php
  • /non-existant-folder/contact.php

有没有办法指定我只想重定向根目录中的contact.php?

6 个答案:

答案 0 :(得分:83)

RedirectMatch使用与URL路径匹配的正则表达式。您的正则表达式/contact.php仅表示包含/contact.php 的任何网址路径,但不仅仅是任何精确/contact.php 的网址路径。因此,使用锚点作为字符串的开头和结尾(^$)

RedirectMatch 301 ^/contact\.php$ /contact-us.php

答案 1 :(得分:21)

这应该这样做

RedirectPermanent /contact.php /contact-us.php 

答案 2 :(得分:8)

redirect 301 /contact.php /contact-us.php

使用重定向匹配规则没有意义,然后必须编写链接以使它们完全匹配。如果你不包括你不必排除!只需使用不匹配的重定向,然后通常使用链接

答案 3 :(得分:0)

如果您希望能够模板匹配和重定向网址,也可以使用RewriteRule

答案 4 :(得分:0)

如果您希望simplest possible solution使用问题,RedirectMatch的替代方法是更基本的Redirect指令。

它不使用模式匹配,因此更明确,更容易让其他人理解。

<IfModule mod_alias.c>

#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php

</IfModule>

查询字符串应该结转,因为文档说:

  

匹配的URL路径之外的其他路径信息将是   附加到目标网址。

答案 5 :(得分:-1)

它会将您的商店页面重定向到您的联系页面

    <IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteBase /
    Redirect 301 /storepage /contactpage
    </IfModule>