首页 > 开发 > Apache > 正文

Apache中解决动态地址跳转死循环的方法

2020-04-16 19:29:12
字体:
来源:转载
供稿:网友

问题背景:矿秘书网的历史遗留问题,刚开始由于各种问题,一些动态页面都是用了?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。

您可能感兴趣的文章:

Apache 虚拟目录和默认首页的设置Apache Rewrite实现URL的301跳转和域名跳转windows中apache 301页面跳转实现方法让apache显示目录列表的配置方法apache设置自动将http跳转到https的方法禁止apache显示目录索引的常见方法(apache禁止列目录)Apache mod_rewrite实现HTTP和HTTPS重定向跳转Apache中使非伪静态url跳转到伪静态url的方法Apache的Rewrite设置多域名301跳转到主域名的方法Apache无法自动跳转却显示目录的解决方法
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表