最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > 建站教程 > 服务器维护 >

rewrite对网址后面有问号的url进行301跳转

时间:2014-06-11 00:59来源:未知 作者:最模板zuimoban 点击:
对新做的网站进行了rewrite,结果rewrite之前的网址还是被百度收录了,反正心里就是不爽,就想把rewrite之前的页面301到rewrite之后的页面上来,结果遇到了一点点问题 rewrite的 RewriteRule

对新做的网站进行了rewrite,结果rewrite之前的网址还是被百度收录了,反正心里就是不爽,就想把rewrite之前的页面301到rewrite之后的页面上来,结果遇到了一点点问题…

rewrite的RewriteRule不支持?后面的参数,也就是说如果我写 RewriteRule ^view.php?id=([0-9]+)$ http://list.chenwei.me/a/%1? [L,R=301] 是没有效果的,经过网上搜索和尝试,最终找到了如下解决方案:

RewriteCond %{HTTP_HOST} ^www.chenwei.me [NC]

 

RewriteCond %{QUERY_STRING} ^id=(.*)$ [NC]

RewriteRule ^view.php$ 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,浏览器提示循环重定向,死循环
因为以上重写将使/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 不符合重写规则,重写结束

(责任编辑:最模板)
------分隔线----------------------------
栏目列表
推荐内容