动态地址rewrite伪静态,然后301跳转到伪静态时死循环解决办
发布:smiling 来源: PHP粉丝网 添加日期:2013-11-25 22:37:33 浏览: 评论:0
问题背景:网站的历史遗留问题,刚开始由于各种问题,一些动态页面都是用了?id=参数的形式,对seo/seo.html" target="_blank">搜索引擎不友好,经常多方面考虑,还是改成伪静态。这里劝各位站长在做新站时,尽量使用伪静态,不仅对搜索引擎,对用户体验也友好。
问题描述:需要将 /news/show_news.php?id=1 形式的地址伪静态成 /news/1 形式,而且 /news/show_news.php?id=1 在浏览器打开要 301 跳转到 /news/1 去。
但是在 .htaccess 加入规则,出现了死循环,死循环规则如下
- RewriteRule ^(d+)$ /news/show_news.php?id=$1 [L]
- RewriteCond %{QUERY_STRING} ^id=(d+)$ [NC]
- RewriteRule ^show_news.php$ /news/%1? [L,R=301]
死循环原因:/news/show_news.php?id=1 跳转到 /news/1,而且 /news/1 被重写为 /news/show_news.php?id=1,/news/show_news.php?id=1 再次跳转到 /news/1,这样,泪流满面!
解决办法:只要在rewrite的时候,添加一个常量参数,这样的url和301的url就不一样了,规则如下:
- RewriteRule ^(d+)$ /news/show_news.php?id=$1&r=1 [L]
- RewriteCond %{QUERY_STRING} ^id=(d+)$ [NC]
- RewriteRule ^show_news.php$ /news/%1? [L,R=301]
终于解决了,泪奔……以上为真实案例,环境是apache。
Tags: rewrite伪静态 301跳转 死循环
相关文章
- ·apache 目录与域名301跳转实现方法(2013-11-23)
- ·apache中htaccess 301跳转设置汇总(2014-09-20)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)