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

.htaccess 301从旧url重定向到SEO友好,.htaccess,redirect,rewrite,friendly-url,.htaccess,Redirect,Rewrite,Friendly Url,我有这样的链接: 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(&|\ |^)([^

我有这样的链接:

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

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

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

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

在我发现的这些情况下,防止循环的另一种快速而肮脏的方法是添加一个querystring,然后在重定向中检查它是否存在

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]
在本网站上找到:

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


您的规则正在查找
home
并重定向到
page.php?p=1
——这似乎不是预期的行为。我想再详细一点会有帮助的。你能举一个你想重定向的url的例子吗?你说“ried要添加301重定向,从旧链接到新链接,但陷入了循环。”你在哪里做重定向?在网站上我有链接
www.site.com/page.php?p=1
,但我想把它改成对用户更友好的链接,如
www.site.com/home
。因此,首先我必须进行重写(它可以工作,
www.site.com/home
——显示与
www.site.com/page.php?p=1
)相同的内容,然后添加重定向规则,以便在有旧链接书签的人被重定向到新的友好URL时。所有这些都必须在.htaccess中完成,无法在应用程序中更改URL生成。尝试使用来自的示例执行此操作