2014-07-27 33 views
0

我有一個ZF2應用如下應用結構:ZF2 - 合併資產使用Apache的AliasMatch

myapplication 
-->config 
-->data 
-->module [This directory is empty, as all my modules are in the vendor dir] 
-->public 
    -->.htaccess 
    -->index.php 
-->vendor 
    -->Module1 
     -->assets 
      -->css 
      -->js 
      -->images 
     -->config 
     -->src 
     -->view 
     -->Module.php 
    -->Module2 
     -->assets 
      -->css 
      -->js 
      -->images 
     -->config 
     -->src 
     -->view 
     -->Module.php 
    -->Module3 
     -->assets 
      -->css 
      -->js 
      -->images 
     -->config 
     -->src 
     -->view 
     -->Module.php 

正如你看到的,我的所有資產文件都很好地組織在它自己的模塊。不過,我希望使用以下網址訪問任何資產:

http://myapplication/css/xyz.css 

http://myapplication/js/xyz.js 

http://myapplication/images/xyz.jpg 

我該如何實現這一目標?我發現的最簡單的方法是在我的虛擬主機中使用apache指令aliasmatch。 但是,我無法得到它的工作的權利..

AliasMatch /(css|js|images)/(.*) C:/Users/myapplication/vendor/[MODULE_NAME]/assets/$1 

感謝

回答

1

我認爲你不應該去重寫上實現這一點,因爲你要利用一切資源要求它們可通過zf2中的public文件夾訪問,但您的模塊位於此公用文件夾「外部」。

這就是重寫不起作用的原因。

所以無論你創建自己的模塊HANDELS資產的請求,去每個模塊資產的文件夾,並在public提供它,或者你可以看看這個倉庫https://github.com/RWOverdijk/AssetManager這HANDELS這個給你。

+0

assetmanager模塊看起來並不是唯一的優化方式。在大型產品環境中,對每個資源執行PHP調用都會非常緩慢。有沒有其他方法可以做到這一點? – Jake

+0

是的,因爲我們的同事帶着這個模塊也在我的腦海中,我頭上的任何其他選項都會導致一些php調用(如果不存在,請將源複製到公共位置,將文件哈希與模塊資產進行比較 - if平等不復制 - 目前的公共文件) - 目前我沒有其他想法如何以任何其他方式做到這一點 – ins0

+0

@Jake'是否有任何其他方式來做到這一點?是的,使用AssetManager,將您的資產緩存在生產環境中 - > https://github.com/RWOverdijk/AssetManager/wiki/Caching – Crisp

相關問題