用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

动态地址rewrite伪静态,然后301跳转到伪静态时死循环解决办

时间:2015-01-23  来源:西部数据  作者:西部数据

问题背景:网站的历史遗留问题,刚开始由于各种问题,一些动态页面都是用了?id=参数的形式,对seo/seo.html" target="_blank">搜索引擎不友好,经常多方面考虑,还是改成伪静态。这里劝各位站长在做新站时,尽量使用伪静态,不仅对搜索引擎,对用户体验也友好。

问题描述:需要将 /news/show_news.php?id=1 形式的地址伪静态成 /news/1 形式,而且 /news/show_news.php?id=1 在浏览器打开要 301 跳转到 /news/1 去。

但是在 .htaccess 加入规则,出现了死循环,死循环规则如下

  1. RewriteRule ^(d+)$ /news/show_news.php?id=$1 [L] 
  2. RewriteCond %{QUERY_STRING} ^id=(d+)$ [NC] 
  3. 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就不一样了,规则如下:

  1. RewriteRule ^(d+)$ /news/show_news.php?id=$1&r=1 [L] 
  2. RewriteCond %{QUERY_STRING} ^id=(d+)$ [NC] 
  3. RewriteRule ^show_news.php$ /news/%1? [L,R=301] 

终于解决了,泪奔……以上为真实案例,环境是apache。

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门