我有这样的链接:
www.site.com/page.php?p=1
需要将其重写为 htaccess 中的友好 URL
RewriteRule ^home$ page.php?p=1
它有效,但现在我有两个内容相同的活动链接。
尝试将 301 重定向从旧链接添加到新链接,但陷入循环。任何想法如何解决这个问题?
我有这样的链接:
www.site.com/page.php?p=1
需要将其重写为 htaccess 中的友好 URL
RewriteRule ^home$ page.php?p=1
它有效,但现在我有两个内容相同的活动链接。
尝试将 301 重定向从旧链接添加到新链接,但陷入循环。任何想法如何解决这个问题?
尝试匹配实际请求,以便您的规则不会循环:
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
我发现在这些情况下防止循环的另一种快速而肮脏的方法是添加一个查询字符串,然后检查它在重定向中是否存在。
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/
去掉页面上的重定向,在htaccess中处理。
RewriteRule ^page\.php\?p=1$ /home [L,R=301]
这将重定向到 /home 并停止您现在拥有的重定向循环。
重定向 301 /page.php?p=1 www.yourwebsite.com/home?p=1 RewriteRule ^home?p=1$ /page.php?p=1