2010-06-09 135 views
1

我正在研究一個Zend Framework項目,在那裏我偶然發現了一些問題。 這個問題來自模塊是Zend框架中第二類公民的事實。在我的項目中,我希望每個模塊都有一個文件夾,其中包含要從外部訪問的文件 - 樣式表,JavaScript和圖像等文件。Apache - 「動態」重寫規則

現在,這是如何完成的。隨着Zend框架的項目,我有一個文件夾結構,看起來像這樣:

  • 應用/
    • 模塊/
      • ModuleOne的/
        • 公共/
          • 樣式表.css
      • ModuleTWO中/
      • 模塊ModuleTHREE/
  • 公共/
    • 的index.php

標準的.h地處公共/文件夾taccess文件保存了這一點:

SetEnv APPLICATION_ENV development 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

它的工作方式是,該項目的apache的DocumentRoot的是公共/文件夾。所有請求都通過index.php文件重定向到了Zend Framework路由器組件接管的位置。現在,我絕不是Apache的專家,也不是mod_rewrite,所以如果這只是愚蠢的話,請原諒我。我想我在現有的重寫規則中實現了一個額外的步驟,以便如果我請求http://project/public/moduleOne/stylesheet.css它將例如解析爲/var/www/project/application/modules/moduleOne/public/stylesheet.css

因此,這需要做的步驟是檢查URI中的第一個元素是公共/如果是這樣,我們採取下段模塊的名稱,並使用該路徑,我們正在努力解決並嘗試提供該文件。

這是所有可能的還是沒有人有更好的建議?

謝謝您的時間 基督教拉斯穆森

回答

0

只需mod_rewrite的,你不能要求文檔根目錄以外的文件。所以唯一的解決方案是使用位於文檔根目錄下的指向模塊目錄的符號鏈接。

+0

嗨,奧洛,遺憾忘記這個問題。 關於訪問文檔根目錄之外的資源,你的確是對的。我真誠地感謝你的回答。 – 2011-03-07 09:35:35