.htaccess 301从旧网址重定向到SEO友好

时间:2013-01-23 00:08:12

标签: .htaccess redirect rewrite friendly-url

我有这样的链接:

www.site.com/page.php?p=1

需要将其重写为htaccess中的友好网址

RewriteRule ^home$ page.php?p=1

它有效,但现在我有两个具有相同内容的活动链接。

尝试将旧链接中的301重定向添加到新链接但卡在循环中。任何想法如何解决?

4 个答案:

答案 0 :(得分:1)

尝试与实际请求进行匹配,以便您的规则不会循环:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /page\.php\?p=1(&|\ |^)([^\ ]*)
RewriteRule ^page\.php$ /home?%3 [L,R=301]

# then your internal rewrite
RewriteRule ^home$ page.php?p=1

答案 1 :(得分:0)

删除页面上的重定向并在htaccess中处理它。

RewriteRule ^page\.php\?p=1$ /home [L,R=301]

这将重定向到/ home并停止您现在拥有的重定向循环。

答案 2 :(得分:0)

另一个快速&我发现在这些情况下阻止循环的脏方法是添加一个查询字符串,然后在重定向中检查它是否存在。

RewriteCond %{QUERY_STRING} ^p=1
RewriteCond %{QUERY_STRING} !foo=bar
RewriteRule ^page\.php$ /home [NC,R=301,L]
RewriteRule ^home$ page.php?p=1&foo=bar [NC,L]

在此网站上找到:http://answers.oreilly.com/topic/542-how-to-properly-redirect-for-maximum-seo/

答案 3 :(得分:-1)

  

重定向301 /page.php?p=1 www.yourwebsite.com/home?p=1 RewriteRule   ^ home?p = 1 $ /page.php?p=1