免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2865 | 回复: 10
打印 上一主题 下一主题

apache mod_rewrite url重写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-29 16:32 |只看该作者 |倒序浏览
因为SEO的原因,现在网站http://www.ruiliya.com/的动态部分,栏目文章列表页(如:http://www.ruiliya.com/jiankang/ysbj/?currentPageID=1)需要用到url重写。看了网上的好多url重写实现伪静态的文章,但是还是一头雾水的。我想实现访问某个栏目文章列表页时实现的重写效果:http://www.ruiliya.com/jiankang/ysbj/?currentPageID=1http://www.ruiliya.com/jiankang/ysbj/1/  。因为这样的话,方便以后动态产生http://www.ruiliya.com/jiankang/ysbj/1/index.html 页面实现静态化。希望前辈们多多指点。或者有其它更好的处理方法,也可以。

论坛徽章:
0
2 [报告]
发表于 2011-12-29 20:30 |只看该作者
自己顶一下。

论坛徽章:
0
3 [报告]
发表于 2011-12-29 23:12 |只看该作者
自己再定一个

论坛徽章:
0
4 [报告]
发表于 2011-12-30 13:30 |只看该作者
    RewriteEngine on
RewriteRule ^/jiankang/ysbj/([0-9]+)/$ /jiankang/ysbj/?currentPageID=$1 [NC,L]

论坛徽章:
0
5 [报告]
发表于 2011-12-30 16:20 |只看该作者
本帖最后由 greattiny 于 2011-12-30 18:51 编辑

回复 4# LnBSD


    谢谢。多谢了。
我刚才测试了。可以。谢谢。
但是那个index.php的处理脚本不可以省略。这样写运行正常:
RewriteRule ^/jiankang/ysbj/([0-9]+)/$ /jiankang/ysbj/index.php?currentPageID=$1 [NC,L]


论坛徽章:
0
6 [报告]
发表于 2011-12-30 18:54 |只看该作者
本帖最后由 greattiny 于 2011-12-30 18:56 编辑

回复 4# LnBSD


    这样的话。我需要写的规则如下:
RewriteRule ^/jiankang/ysbj/([0-9]+)/$ /jiankang/ysbj/index.php?currentPageID=$1 [NC,L]
RewriteRule ^/jiankang/yyys/([0-9]+)/$ /jiankang/yyys/index.php?currentPageID=$1 [NC,L]

RewriteRule ^/shoushen/sssp/([0-9]+)/$ /shoushen/sssp/index.php?currentPageID=$1 [NC,L]
RewriteRule ^/shoushen/kxjf/([0-9]+)/$ /shoushen/kxjf/index.php?currentPageID=$1 [NC,L]

......


等等这样。我想栏目的那部分shoushen/sssp/可以用变量代替么?


我这样写可以么:

RewriteRule ^/([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)/$ /$1/$2/index.php?currentPageID=$3 [NC,L]

论坛徽章:
0
7 [报告]
发表于 2011-12-30 19:00 |只看该作者
本帖最后由 greattiny 于 2011-12-30 20:28 编辑

多谢高手指点了。我那样写可以运行。我想问一下,我这样的话。等于是隐藏着用index.php处理了http请求。有时候是301跳转到新的URL。这2种情况,用哪个命令控制的哦?
把我解决后的配置httpd.conf贴出来,需要对以后看这个帖子的人有帮助:

<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule ^/([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)/$ /$1/$2/index.php?currentPageID=$3 [NC,L]
</IfModule>

论坛徽章:
0
8 [报告]
发表于 2011-12-30 22:34 |只看该作者
总结的挺好,不错

论坛徽章:
0
9 [报告]
发表于 2011-12-30 22:36 |只看该作者
<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule ^/([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)/$ /$1/$2/index.php?currentPageID=$3 [NC,L,R=301]
</IfModule>

论坛徽章:
0
10 [报告]
发表于 2011-12-30 22:42 |只看该作者
本帖最后由 greattiny 于 2011-12-30 23:00 编辑

回复 9# LnBSD


    多谢,谢谢。这样加上R=301的话。他就显示的跳转?我还是自己去测试一下吧。嘿嘿。
在以上的正则表达式前面的“^”字符的作用是什么哦?或者怎样使用“^”,在这里它的意思是?

还有一个问题。嘿嘿,我看见有好多官方文档上面的重写规则像这样:
RewriteCond   xxxxxx  
RewriteRule                ^(.+)                http://XXXXXXX

XXXX处没写全,RewriteRule后面的^(.+)代表的是所有的请求的意思么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP