了解 Mac 上 Apache 中的 URL

了解 Mac 上 Apache 中的 URL

在 Mac Snow Leopard 上运行 Apache(即启用 Web 共享)。

路径的评估方式并非预期:
example.com/folder 返回的是一个文件(无例外)而不是一个文件夹。

如果我打电话给example.com/events/March并且我的根目录中有一个文件 events.php,Apache 返回该页面,而其余路径被忽略。

此外,此调用优先于 .htaccess 中的命令

例如我需要example.com/events/March重定向至example.com/events.php?month=March
阿帕奇归来example.com/events.php没有必要的论据。

RewriteEngine on
RewriteRule ^events/(.+)/?$ events.php?month=$1

如果 events.php 不存在(假设它名为 eventsHandler.php),则上述 rewriteRule 可以完美运行。所以我知道这不是 .htaccess 的问题

我尝试让文件扩展名可见,但没有帮助。

因此问题是:

  1. 为什么 Mac 上的 Apache 会删除文件扩展名并将文件视为文件夹?
  2. 为什么.htaccess 不推翻这一点?
  3. 我该如何修复这个问题,让它能够正常工作?

答案1

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

此外,请务必在您依赖的所有代码中测试您的路径,因为您偶尔可能会遇到一些代码,这些代码会在检测到操作系统后尝试自动转换路径。我们在 Novell NetWare 时代就遇到过类似的问题(不是在 NetWare 时代,它通过在服务器端添加所谓的“命名空间”来支持单个卷上的多个文件系统命名约定,而是在第三方工具和库中,有时会引起混淆)。

相关内容