免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2154 | 回复: 9

apache mod_rewrite 问题请教 [复制链接]

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-04-02 09:32:18
发表于 2009-10-20 09:48 |显示全部楼层
20可用积分
发到web版没人理,转到shell版来求助。

如何将:

http://192.168.5.101/xxx/yyy/zzz/29255610_20090727095931/asdf

rewrite成

http://192.168.5.101/xxx/yyy/zzz/abc/29255610_20090727095931/asdf

其中29255610_20090727095931 除了下划线不变外,数字都是变动的,位数也是变动的。
其中200907 保留,我需要拿它来做选择
比如我是这样写的:
RewriteCond %{REQUEST_URI} ^/([0-9]{1,8})_200907([0-9]{1,8})/
RewriteRule /([0-9]{1,8})_200907([0-9]{1,8})/(.*) http://192.168.5.101/abc/$1 [R=permanent,L]
可是不成啊,正则不熟,高手帮忙。

我再描述清楚些:
比如我有如下目录
/xxx/yyy/zzz/29255610_20090727095931/
/xxx/yyy/zzz/29255610_2009082342342342/
/xxx/yyy/zzz/29255610_200909324234322423/
每个目录下都有很多文件。
但是现在呢,我把7月和8月的目录挪到/xxx/yyy/zzz/abc/ 下面,9月的不动,那么针对7月和8月 的文件访问做rewrite规则。

[ 本帖最后由 opiopuiopoi 于 2009-10-20 10:31 编辑 ]

最佳答案

查看完整内容

不管asdf是什么重定向后,不会变吧?比如说原来是asdf重定向后,这个位置还是asdf阿,不用理它RewriteRule "^/xxx/yyy/zzz/([0-9]*_)(200907)([0-9]*)/(.*)" "/xxx/yyy/zzz/abc/$1$2$3/$4"或者这样就可以了RewriteRule "^/xxx/yyy/zzz/([0-9]*_)(200907.*)" "/xxx/yyy/zzz/abc/$1$2" 结尾都要记得加上想要的标记

论坛徽章:
0
发表于 2009-10-20 09:48 |显示全部楼层
不管asdf是什么重定向后,不会变吧?比如说原来是asdf重定向后,这个位置还是asdf阿,不用理它

RewriteRule "^/xxx/yyy/zzz/([0-9]*_)(200907)([0-9]*)/(.*)" "/xxx/yyy/zzz/abc/$1$2$3/$4"
或者这样就可以了
RewriteRule "^/xxx/yyy/zzz/([0-9]*_)(200907.*)" "/xxx/yyy/zzz/abc/$1$2"

结尾都要记得加上想要的标记

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2009-10-20 09:55 |显示全部楼层
09:55:30 root@ST-TEST:[/]#echo http://192.168.5.101/xxx/yyy/zzz/29255610_20090727095931/asdf | sed 's@/[0-9]*_200907@/abc&@'
http://192.168.5.101/xxx/yyy/zzz/abc/29255610_20090727095931/asdf
09:55:32 root@ST-TEST:[/]#

论坛徽章:
0
发表于 2009-10-20 09:55 |显示全部楼层

论坛徽章:
0
发表于 2009-10-20 10:11 |显示全部楼层
楼主的描述好像不太清楚阿。

看上去好像就是要让下面的网址
http://192.168.5.101/xxx/yyy/zzz/29255610_20090727095931/asdf
重定向到:
http://192.168.5.101/xxx/yyy/zzz/abc/29255610_20090727095931/asdf
只是多了一级目录吗?其他还有什么?

你说的 那个200907要保留跟这个重定向有什么关系??越说越模糊阿

论坛徽章:
0
发表于 2009-10-20 10:18 |显示全部楼层
RewriteRule "^/xxx/yyy/zzz/(.*)" "/xxx/yyy/zzz/abc/$1"

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-04-02 09:32:18
发表于 2009-10-20 10:24 |显示全部楼层
原帖由 lucash 于 2009-10-20 10:11 发表
楼主的描述好像不太清楚阿。

看上去好像就是要让下面的网址
http://192.168.5.101/xxx/yyy/zzz/29255610_20090727095931/asdf
重定向到:
http://192.168.5.101/xxx/yyy/zzz/abc/29255610_20090727095931/ ...


只是多了一级目录;
保留200907是因为我可能将来需要包含200907的url请求进行转向,但是200908的不转向。
29255610_20090727095931 和 asdf 都是变动的。

论坛徽章:
0
发表于 2009-10-20 10:34 |显示全部楼层
原帖由 beginner-bj 于 2009-10-20 09:55 发表
09:55:30 root@ST-TEST:[/]#echo http://192.168.5.101/xxx/yyy/zzz/29255610_20090727095931/asdf | sed 's@/[0-9]*_200907@/abc&@'
http://192.168.5.101/xxx/yyy/zzz/abc/29255610_20090727095931/asdf
09 ...



这个答案让人惊了。

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-04-02 09:32:18
发表于 2009-10-20 10:39 |显示全部楼层
原帖由 lucash 于 2009-10-20 10:31 发表
不管asdf是什么重定向后,不会变吧?比如说原来是asdf重定向后,这个位置还是asdf阿,不用理它

RewriteRule "^/xxx/yyy/zzz/([0-9]*_)(200907)([0-9]*)/(.*)" "/xxx/yyy/zzz/abc/$1$2$3/$4"
或者这样就可以 ...


这个似乎行。验证中。。。。。

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-04-02 09:32:18
发表于 2009-10-20 10:50 |显示全部楼层
原帖由 opiopuiopoi 于 2009-10-20 10:39 发表


这个似乎行。验证中。。。。。

搞定了,感谢lucash 。 又学了一招,原来只知道$1 ,原来还有$2
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP