我最近在Ubuntu上使用过FatFree,并且在将它放入子目录时没有任何问题。但是,我最近尝试在Mac上的用户网站(10.6.8)中执行此操作,然后遇到problem of needing a RewriteBase for the routing to work。
我想知道是否有人知道为什么Ubuntu上的默认Apache设置似乎允许路由在.htaccess中没有RewriteBase的情况下工作,但Mac上的设置使它成为必要。
Ubuntu设置使用一堆VirtualHosts,而Mac配置只有一个服务器配置,mod_userdir启用,并且每个用户的Sites目录都有一个指令。
答案 0 :(得分:3)
mod_rewrite documentation表示除非满足以下任一条件,否则必须使用RewriteBase指令:
- 原始请求和替换位于DocumentRoot下方(而不是通过其他方式,例如Alias可以访问)。
- 包含RewriteRule的目录的文件系统路径(以相对替换为后缀)也可用作服务器上的URL路径(这种情况很少见)。
第一个条件可能是您的Ubuntu设置,但不是Mac设置,因为您使用的是mod_userdir。如果将文件从〜/ Sites移动到DocumentRoot(Mac上默认为/ Library / Webserver / Documents),则可能不再需要RewriteBase。
答案 1 :(得分: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
答案 2 :(得分:1)
让我解释一下如何分析Mac和Ubuntu配置之间的区别,这样你才能理解为什么RewriteBase需要一个而不是另一个。将其添加到您的Apache配置:
RewriteLog /var/log/apache2/error.log
RewriteLogLevel 9