2013-01-23 92 views
0

我在我的第一個笨的項目工作...笨 - 加載圖像,CSS,JS,視頻(網絡資源)到HTML

建立我的大多數PHP,並開始與基本完成股代息後打我意識到所有對application/views/文件夾的訪問都被.htaccess拒絕。

當我想要訪問頁面特定的JavaScript,圖像或任何Web資源文件夾時,這對我的文件結構來說是一個巨大的問題。由於我所有的views template都假定文件在本地使用(即Page_name/images/cutedog.jpg,在我的代碼中更精確地爲<img src="{images}cutedog.jpg">)。

我找到的解決方案是修改.htacces,以便過濾掉所有媒體文件,並允許訪問我的應用程序文件夾。但是通過這樣做,我會揭示我寧願避免的文件結構。

我知道我可以將我的網絡資源放在我的應用程序文件夾之外,這樣可以解決問題。但爲了可維護性的目的,我認爲現在擁有一切就像是更多的邏輯。

所以我的問題是,在如下...什麼相關工作將您建議讓: - 我可以在application/views/issue/WEB_PAGE/Web-resource-folder 保持我的網絡資源 - 把我的文件結構隱藏 - 網絡資源可以訪問

我的.htaccess

Deny from all 
<FilesMatch "\.(css|js|jpg|pdf|avi|mpg|robots\.txt|png|pdf|favicon\.ico)$"> 
    Order allow,deny 
    Allow from all 
</FilesMatch> 

我的文件結構:

-+ /application/ 
| 
|-+ /Typical CI folders/   
|-+ /view/ 
    |-+ /issue/ 
    |-+ /1/ 
     |-+ /page1/ 
     |-+ /img/ 
     |-+ /js/ 
     |-+ /video/ 
     |-+ /page2/ 
     |-+ /img/ 
     |-+ /js/ 
     |-+ /video/ 
+0

您永遠不需要直接訪問應用程序目錄。你的控制器,視圖和路線應該爲你處理所有這些。你可能誤解了CI的工作原理嗎? – monkeymatrix

+0

Javascript和CSS資源可以放置在公共'腳本'或'CSS'目錄中,然後您只需修改核心配置文件.htaccess以確保它不會將這些文件夾的請求重寫到index.php。 – monkeymatrix

+0

這是一個糟糕的設計。如果將資源放在應用程序文件夾之外,爲什麼你不能達到同樣的效果? – itachi

回答

1

,您將需要編寫這裏面會告訴的.htaccess類似複雜的重寫規則:如果你問我,會爲你創造更多的資源變得越來越繁瑣

if url is blah/bloh/blih/WEB_PAGE/images/cutedog.jpg 
then fetch application/views/issue/WEB_PAGE/img/cutedlog.jpg 

。就像你建議你應該把你的web資源放在應用程序文件夾之外。

我的CI結構總是看起來是這樣的:

/application 
/resources 
    /page1 
     /img 
     /js 
     /video 
    /page2 
     /img 
     /js 
     /video