免费注册 查看新帖 |

Chinaunix

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

[Web] Apache URL rewrite 问题,不同服务器上不同结果 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-12 17:52 |只看该作者 |倒序浏览
.htaccess文件功能
1.如果文件储存在(.php, .html ...)直接访问文件
2.浏览器直接访问文件夹
  a.如果文件夹存在:读取文件夹里的index.php文件
  b.如果文件夹不存在:如果该文件夹所在母文件夹有该文件夹名称.php执行该文件
  例子:/admin/----> /admin.php
3.以上rule都不满足时,运行/index.php

   以上是我要需要实现的功能,以下是我写的rewrite rule:
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteBase /

  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteRule ^/(.+[^/])/?[^\.php]$  $1.php  [R,L]  

  6. RewriteCond %{REQUEST_FILENAME} !-f
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteRule . /index.php [L]
  9. </IfModule>
复制代码
这套规则在同一套代码,不同版本apache上结果不同。在 apache 2.2.17 上表现正常,但是在apache 2.2.19上就失败。开启RewriteRuleLog 分析日志发现是由于,前导"/"的缘故,在 RewriteRule ^/(.+[^/])/?[^\.php]$  $1.php  [R,L]   中,去掉 开始的”/"后,在apache 2.2.19就可以了,但是总觉得这个规则写的不伦不类。而且还是有些个别情况不能正常处理。现在想到的办法是,先把所有未在URL末尾添加"/"的,重定向成末尾添加"/",然后再对重定向后URL进行分析,看是否存在相关目录,没有的话就再次重定向到相关php文件。不知道这样可行不?
    还请大家多多指教。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP