在Mac Snow Leopard上运行Apache(即启用Web共享)。
path正在以不预期的方式进行评估:
example.com/folder正在返回一个文件(sans exception)而不是一个文件夹。
如果我打电话给example.com/events/March,并且在我的根目录中有一个文件events.php,Apache将返回该页面,而path的其余部分将被忽略。
而且,这个调用优先于.htaccess中的命令
例如。 我需要example.com/events/Marchredirect到example.com/events.php?month=March
Apache没有必要的参数返回example.com/events.php 。
RewriteEngine on RewriteRule ^events/(.+)/?$ events.php?month=$1
如果events.php不存在(让我们说这就是所谓的eventsHandler.php),那么上面的rewriteRule奇妙地工作。 所以我知道它不是.htaccess的问题
我试图使文件扩展名可见,它没有帮助。
所以问题是:
在MacOS上,斜杠(“/”)是在文件名中使用的有效字符,不是path分隔符。 尝试使用冒号作为path分隔符。
此外,请确保在所有依赖的代码中testingpath,因为偶尔会遇到一些代码,这些代码会在检测到操作系统后尝试自动转换path。 在Novell NetWare的日子里,我们遇到了一些类似的问题(不是NetWare,它通过在服务器端添加一个叫“命名空间”的东西来支持单个卷上的多个文件系统命名约定,但是使用第三方工具和有时会引入混淆的图书馆)。