了解Mac上的Apache中的URL

在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的问题

我试图使文件扩展名可见,它没有帮助。

所以问题是:

  1. 为什么在Mac上的Apache放弃文件扩展名,并将文件视为一个文件夹?
  2. 为什么不.htaccess否决了这一点?
  3. 我如何解决这个问题,它应该工作?

在MacOS上,斜杠(“/”)是在文件名中使用的有效字符,不是path分隔符。 尝试使用冒号作为path分隔符。

此外,请确保在所有依赖的代码中testingpath,因为偶尔会遇到一些代码,这些代码会在检测到操作系统后尝试自动转换path。 在Novell NetWare的日子里,我们遇到了一些类似的问题(不是NetWare,它通过在服务器端添加一个叫“命名空间”的东西来支持单个卷上的多个文件系统命名约定,但是使用第三方工具和有时会引入混淆的图书馆)。