网站改版后,我有一对夫妇的需要重定向的页面。 一切都停留在同一个域中,只是一对夫妇的事情都进行了重组和/或重命名。 它们的形式是:
/contact.php
就是现在:
/contact-us.php
使用.htaccess文件,我已经添加了这条线,这是一个我觉得最推荐:
RedirectMatch 301 /contact.php /contact-us.php
这主要是细 - 它的工作 - 问题是,它也重定向:
- /team1/contact.php
- /non-existant-folder/contact.php
有没有指定我只想重定向根contact.php的一种方式?
RedirectMatch
使用是对URL路径相匹配的正则表达式。 而你的正则表达式/contact.php
只是意味着任何包含URL路径/contact.php
但不仅仅是这正是任何URL路径/contact.php
。 因此,使用的字符串的开始和结束的锚( ^
和$)
RedirectMatch 301 ^/contact\.php$ /contact-us.php
这应该这样做
RedirectPermanent /contact.php /contact-us.php
redirect 301 /contact.php /contact-us.php
有使用redirectmatch规则是没有意义的,然后有那么他们是完全一致的写你的链接。 如果不包括你没有排除! 只需使用重定向不匹配,然后使用正常的链接
你也可以使用一个重写规则 ,如果你想模板匹配和重定向的URL的能力。
如果你喜欢用最简单的可能的解决方案的问题,以替代RedirectMatch是更基本的, 重定向指令。
它不使用模式匹配,这样可以更明确,更容易让别人理解。
即
<IfModule mod_alias.c>
#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php
</IfModule>
查询字符串应该延续,因为文档说:
超出匹配URL路径其他路径信息将被附加到所述目标URL。
这将您的商店页面重定向到您的联系人页面
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
Redirect 301 http://www.youtdomain.com/store http://www.youtdomain.com/contact
</IfModule>