我有这样的链接:
www.site.com/page.php?p=1
需要将其重写为htaccess中的友好网址
RewriteRule ^home$ page.php?p=1
它有效,但现在我有两个具有相同内容的活动链接。
尝试将旧链接中的301重定向添加到新链接但卡在循环中。任何想法如何解决?
答案 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