2013-10-05 47 views
3

我有Codeigniter文件夾的以下目錄結構。您可以看到,我已將所有資產放在應用程序根目錄的assets文件夾中。Codeigniter:無法訪問樣式表

enter image description here

基本URL被定義爲

$配置[ 'BASE_URL'] = 'http://kamran.dev/Codeigniter/application/';

我試圖修改它

$配置[ 'BASE_URL'] = 'http://kamran.dev/Codeigniter/';

但這也沒有工作。

enter image description here

任何人都可以請看看,並告訴我,我做錯了什麼嗎?

P.S.然後,我刪除了從包含

拒絕來自所有

application文件夾中的.htaccess文件這爲我工作。但這似乎不是一個好主意。

+0

下面我想這個問題也關係到您的其他問題... – doitlikejustin

+0

你可能會說。但這更像是一個'htaccess',所以我把它放在一個單獨的文件中。 –

+0

我想,一旦你獲得了.htaccess訪問權限,請改變你的'base_url'我怎麼推薦它,你應該很好去。 – doitlikejustin

回答

3

您有多個選項。最簡單的一種是資產的文件夾移動到相同水平的應用程序,使您的目錄結構:

  • 應用
  • 系統
  • 資產
    • CSS
    • IMG
    • js

由於assets文件夾不在.htaccess文件夾中,因此不會被您的Web服務器阻止。

或者,你可以在資產文件夾下面添加規則.htaccess文件:

# /assets/.htaccess 
Allow from all 

我沒有測試過這一點,但我認爲它應該工作。

另一種方法是更改​​.htaccess並在資產文件夾上設置例外,但如果不編寫備用規則來鎖定所有不應該可訪問的文件夾,那麼刪除Deny From All是一個非常糟糕的主意(具有安全隱患)。

另外,將您的base_url設置爲包含應用程序,系統和資產目錄的文件夾(此文件夾包含Codeigniter的引導程序/前端控制器index.php)。

此外,我會建議你使用BASE_URL來呼應你的URL()函數:

base_url("assets/css/bootstrap.min.css"); 

,或呼叫控制器/路由

base_url("controller/method"); 

的BASE_URL功能考慮的價值的$config['index_page']以及必要的前導/後沿斜線。

1

更改base_url以下幾點:

echo base_url("assets/css/file-name-here.css"); 

希望將URL字符串傳遞給base_url功能。這樣,您可以將$config['base_url']更改爲您想要的任何內容,並且會正確地將該字符串附加到該URL。

1

作爲一個除了嚴峻的答案。如果您對您的重寫引擎應該在你的根的.htaccess

<IfModule mod_rewrite.c> 

RewriteEngine on 

RewriteCond $1 !^(index\.php|assets|robots\.txt) 
RewriteRule ^(.*)$ index.php/$1 [PT,L] 

</IfModule>