2013-07-13 50 views
1

我在Ubuntu上最近用了很多FatFree,並且沒有問題把它放到子目錄中。不過,我最近試圖在Mac上的用戶網站(10.6.8)中執行此操作,並遇到了problem of needing a RewriteBase for the routing to work爲什麼fatfree需要Mac上的RewriteBase而不是Ubuntu?

我想知道是否有人有任何想法爲什麼Ubuntu上的默認Apache安裝程序似乎允許路由在沒有RewriteBase的情況下在.htaccess中工作,但Mac上的安裝程序使其成爲必需。

Ubuntu安裝程序使用了一堆VirtualHosts,而Mac配置只是啓用了服務器配置,啓用了mod_userdir,併爲每個用戶的Sites目錄提供了指令。

回答

3

mod_rewrite documentation說,除非以下任一條件爲真RewriteBase指令要求:

  • 的原始請求,並取代是下DocumentRoot(而不是通過別名等其他方式可訪問)。
  • 包含RewriteRule的目錄的文件系統路徑,後綴爲相對替換,也作爲服務器上的URL路徑有效(這很少見)。

第一個條件可能會見到你的Ubuntu安裝,但不與你的Mac安裝程序,因爲你正在使用mod_userdir。如果您將文件從〜/站點移動到DocumentRoot(Mac上的默認設置是/ Library/Webserver/Documents),那麼很可能您不再需要RewriteBase了。

+0

是的,你是對的。在/ Library/Webserver/Documents/fatfree-master中,沒有RewriteBase就可以正常工作!謝謝! – Rikki

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

1

讓我解釋一下你應該如何分析Mac和Ubuntu的配置之間的差異,所以你可以理解爲什麼一個,但不是必需RewriteBase另一個。添加到您的Apache配置:

RewriteLog /var/log/apache2/error.log 
RewriteLogLevel 9 
+0

謝謝!你有什麼鏈接日誌格式的含義?我有幾十行關於每個請求,其中沒有提到RewriteBase,或似乎表明RewriteBase已經有任何影響。 – Rikki

相關問題