2014-04-27 52 views
0

我的問題在我想保持資產的文件夾中的應用程序文件夾內不被外部

我想保持它包含(css, js, images)應用程序文件夾內不被外部資產的文件夾的標題。
如果我將assets文件夾保留在應用程序文件夾中,我無法訪問其中的文件。

.htaccess文件代碼

RewriteEngine on 
RewriteCond $1 !^(index\.php|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php/$1 [L] 

標準應用程序結構:

  • 應用
    • 應用
    • 個資產
    • SYS
    • 的.htaccess
    • 的index.php

以前的結構有沒有錯誤。

我想要的結構是這樣的:

  • 應用
    • 應用
      • 資產
      • 配置
      • 控制器
      • ......
    • SYS
    • 的.htaccess
    • 的index.php

我怎麼能這樣做?

+0

以及你不能,因爲他們是在該應用程序的webroot之外。 – lagbox

+0

爲什麼你要這樣做? –

+0

@Matthew Daly:因爲我想將所有的應用程序文件放在一個文件夾中,這是應用程序文件夾。 –

回答

0

你的問題是你正在使用的.htaccess文件正在重寫你的靜態資產的URL,打破了鏈接,所以你需要改變它。

如果你把你assets/文件夾中的應用程序的根目錄內,並修改你的.htaccess到這樣的事情,應該解決的問題:

RewriteEngine on 
RewriteCond $1 !^(index\.php|assets|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php/$1 [L] 

的變化是在第二行 - 基本條件「如果路由不是以index.php,assets或robots.txt開始的,那麼重新將它包含在index.php中。」增加資產應該解決問題。

編輯:默認情況下,CodeIgniter的application/文件夾中有一個.htaccess文件,該文件夾拒絕訪問其中的任何內容。如果你確實想真正能夠從該文件夾提供靜態文件,則可以修改該文件。但是,這將是一個非常糟糕的主意。你的靜態資產應該存在於web根目錄,並且試圖從應用程序文件夾中提供它們將會帶來許多問題 - 如果你允許從外部訪問application/目錄,它可能會導致一些嚴重的安全問題。

+0

不幸的是,我做到了,但並未解決問題,並且我收到了此消息「您無權訪問」。 –

+0

然後更改對該文件夾的權限以允許讀取權限。在Unix或Linux將是chmod a + r資產 –

+0

我正在'windows 7上'localhost(wamp)上工作。 –

相關問題