对新做的网站进行了rewrite,结果rewrite之前的网址还是被百度收录了,反正心里就是不爽,就想把rewrite之前的页面301到rewrite之后的页面上来,结果遇到了一点点问题… rewrite的RewriteRule不支持?后面的参数,也就是说如果我写 RewriteRule ^view.php?id=([0-9]+)$ http://list.chenwei.me/a/%1? [L,R=301] 是没有效果的,经过网上搜索和尝试,最终找到了如下解决方案:
上面的方法是通过来进行过滤判断可以避免死循环,如果是同一个域名下,就会出现重定向过多死循环。 以下转自:http://www.tanbo.name/html/486.html 问题描述: 需要将/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,浏览器提示循环重定向,死循环 解决方法:
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 不符合重写规则,重写结束 (责任编辑:好模板) |