Apache中解决动态地址跳转死循环的方法
问题背景:矿秘书网的历史遗留问题,刚开始由于各种问题,一些动态页面都是用了?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。
相关文章
centos redhat系列对抗ddos之居家必备利器 banip.txt
本文可以用于redhat centos 系列 linux 系统的 屏蔽多连接ip,具有抗ddos功能的代码。2010-11-11APACHE支持.htaccess伪静重写出错 No input file specified的解决方案
这篇文章主要介绍了APACHE支持.htaccess伪静重写出错 No input file specified的解决方案,需要的朋友可以参考下2016-09-09使用stress命令进行Linux CPU压力测试的实现方法
在Linux系统中,有许多工具可以用来进行CPU压力测试,其中一个非常常用的工具就是stress命令,stress命令是一个简单而强大的压力测试工具,可以模拟系统在高负载情况下的运行状态,帮助我们评估系统的稳定性和性能,在本文中,我们将探讨如何使用stress命令进行 CPU压力测试2024-08-08apache开启.htaccess及.htaccess的使用方法
今天本地调试PHP程序,用到了.htaccess,而默认配置里面开启.htaccess,在网上找到了开启.htaccess的可行方法,供朋友们借鉴。2010-12-12
最新评论