设为首页 - 加入收藏 - 网站地图 欢迎加QQ群 :14364084
当前位置:谭博的博客 > bugs > 正文

rewrite:动态地址伪静态为静态地址,动态地址301跳转到静态地址时,死循环的解决方案

时间:2013-02-19 23:33 来源: 标签:apache伪静态 .htaccess 作者:谭博 阅读:

作者:陈伟     整理:谭博

问题描述:

需要将/if.php?id=1&cid=2形式的url伪静态为a/1/2.html形式 ,所有if.php?id=1&cid=2形式的url需要跳转到a/1/2.html形式

于是在.htaccess中写入

RewriteRule ^a/([0-9]+)/([0-9]+).html$ /if.php?id=$1&cid=$2 [L]

RewriteCond %{QUERY_STRING} ^id=([0-9]+)&cid=([0-9]+)$ [NC]

RewriteRule ^if.php$ /a/%1/%2.html? [L,R=301]

访问/if.php?id=1&cid=2,浏览器提示循环重定向,死循环

因为以上重写将使/if.php?id=1&cid=2跳转到a/1/2.html,而a/1/2.html又被重写为/if.php?id=1&cid=2,/if.php?id=1&cid=2再次跳转到a/1/2.html,然后果断悲剧。

解决方法:

RewriteRule ^a/([0-9]+)/([0-9]+).html$ /if.php?id=$1&cid=$2&r=1 [L]

RewriteCond %{QUERY_STRING} ^id=([0-9]+)&cid=([0-9]+)$ [NC]

RewriteRule ^if.php$ /a/%1/%2.html? [L,R=301]

改成如上写法之后,重写过程变为 /if.php?id=1&cid=2跳转到a/1/2.html,而a/1/2.html又被重写为/if.php?id=1&cid=2&r=1,/if.php?id=1&cid=2&r=1 不符合重写规则,重写结束

 

关注微信公众号

微信扫一扫,打赏我

热评文章
    内容不错,支持一下
    评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)