1

我最近在 Ubuntu 上使用了很多 FatFree,并且将它放入子目录没有问题。但是,我最近尝试在 Mac (10.6.8) 上的用户网站上执行此操作,但遇到了需要 RewriteBase 才能使路由正常工作的问题

我想知道是否有人知道为什么 Ubuntu 上的默认 Apache 设置似乎允许路由在 .htaccess 中没有 RewriteBase 的情况下工作,但 Mac 上的设置使它成为必要。

Ubuntu 设置使用了一堆 VirtualHost,而 Mac 配置只有一个服务器配置,启用了 mod_userdir 和一个针对每个用户的站点目录的指令。

4

3 回答 3

3

mod_rewrite 文档说,除非以下任一条件为真,否则需要 RewriteBase 指令:

  • 原始请求和替换位于 DocumentRoot 下(与通过其他方式(例如别名)可访问相反)。
  • 包含 RewriteRule 的目录的文件系统路径(以相对替换为后缀)作为服务器上的 URL 路径也是有效的(这种情况很少见)。

您的 Ubuntu 设置可能满足第一个条件,但您的 Mac 设置不满足,因为您使用的是 mod_userdir。如果您将文件从 ~/Sites 移动到 DocumentRoot(Mac 上的默认值为 /Library/Webserver/Documents),您可能不再需要 RewriteBase。

于 2013-07-16T19:13:02.537 回答
1

我不确定,但我可以告诉您,大多数 apache 设置都具有RewriteBase /默认值,如果您的 F3 位于 webroot 上,那么再次将其写入您的 .htaccess 文件是多余的。mac 上的 MAMP 设置中可能缺少这部分。

在虚拟主机或 webroot 的子目录中运行 F3 通常总是需要有效的 RewriteBase 定义。

可以在此处找到有关此的其他信息:

https://github.com/bcosca/fatfree/wiki/FAQ#can-i-run-f3-in-a-sub-directory

于 2013-07-15T10:14:57.733 回答
1

让我解释一下您应该如何分析 Mac 和 Ubuntu 配置之间的差异,以便您了解为什么其中一个需要 RewriteBase 而另一个不需要 RewriteBase。将此添加到您的 Apache 配置中:

RewriteLog /var/log/apache2/error.log
RewriteLogLevel 9
于 2013-07-16T00:17:14.270 回答