免费注册 查看新帖 |

Chinaunix

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

[Web] 求教apache——mod_rewrite问题 [复制链接]

论坛徽章:
0
发表于 2009-10-24 14:52 |显示全部楼层
问题是这样的:
http://bbs.linuxtone.org/viewthr ... %26amp%3Btypeid%3D2
帖子中举例如何做url重定向,我按照
RewriteCond %{HTTP_HOST} !^www.zzz.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^\.]+)\.zzz\.com http://www.zzz.com/user.php?username=$1
照葫芦画瓢写了个
RewriteCond %{HTTP_HOST} !^www.a.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^\.]+)\www.a\.com http://www.a.com/$1
目标是:a.www.a.com==>www.a.com/a 和  1.txt.www.a.com ==>www.a.com/1.txt
实际试验中,a.www.a.com==>www.a.com/a 转换成功,但1.txt.www.a.com ==>www.a.com/1.txt是转换失败的,客户端浏览器界面显示“Bad Request: Your browser sent a request that this server could not understand”,在日志中查看是:
  applying pattern '^([^\.]+)\.www\.a\.com' to uri 'a.txt.www.a.com'
  local path result: a.txt.www.a.com
到了这一步就不继续转换了。
后我尝试将匹配规则简化成:
RewriteRule ^(.*).www.a.com http://www.a.com/$1 [NC,R,L]
反而能正常转换1.txt.www.a.com ==>www.a.com/1.txt了。
我现在的疑问是:
([^\.]+)匹配的是什么?我的理解是和(.\*)一样啊?如果您觉得说不清楚,可以通过举例来说明让我自己领悟。
第二个疑问就是RewriteRule ^(.+) %{HTTP_HOST} [C]这种格式没见过,是指的把http://a.www.a.com/整个重写到主机头里么?[C]是说如果这个规则不被匹配则不执行下面的RewriteRule。我到现在没看懂这条是干什么的,但我知道我不加这一条就搞不定整个rewrite .
针对HTTP_HOST,我也就知道在rewrite中,访问的页面如果是 www.a.com/test/1.txt,则HOST部分为www.a.com这部分,具体是做什么的,在这里是不是重写了HTTP_HOST我也确实不太清楚。

论坛徽章:
0
发表于 2009-10-25 23:13 |显示全部楼层
^([^\.]+)
搞懂了,刚脑子进水了,竟然[^\.]理解成^.……在中括号里的^明明是反向引用的意思。。



RewriteRule ^(.+) %{HTTP_HOST}$1 [C]#把用户输入完整的地址(GET方式的参数除外)作为参数传给下一个规则,[C]是Chain串联下一个规则的意思

论坛徽章:
54
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
发表于 2009-10-26 11:03 |显示全部楼层
表达式没有写正确啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP