为什么fatfree需要Mac上的RewriteBase但不需要Ubuntu?

时间:2013-07-13 12:10:20

标签: macos ubuntu apache2 fat-free-framework

我最近在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目录都有一个指令。

3 个答案:

答案 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