2011-07-20 102 views
5

我剛剛添加了一個htaccess文件到我的codeigniter應用程序,從url中刪除「index.php」。 URL的工作正常,但現在的CSS鏈接不工作,即使引用是絕對的(即「http:// ...」)圖像以及所有其他鏈接工作得很好,但CSS文件獲勝加載。這是HTAccess文件。CodeIgniter HTAccess不加載CSS文件

RewriteEngine on RewriteCond $1 !^(main.php|images|robots.txt) RewriteRule ^(.*)$ main.php/$1 [L]

是的,現在我的索引文件是main.php因爲我將使用在相同的CI安裝兩個不同的應用。謝謝你的幫助。

回答

9

你也不妨試試以下方法:

# Checks to see if the user is attempting to access a valid file, 
# such as an image or css document, if this isn't true it sends the 
# request to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ main.php/$1 [L] 

這將允許你創建你想要的任何文件夾Web根目錄(樣式,圖片,腳本),而不必在htaccess文件中聲明它們。

+0

不要忘記robots.txt和站點地圖。 –

+0

與這段代碼無關,它會檢查文件在文件系統中是否有效,然後重定向到應用程序main.php文件(如果這些文件不存在)。這對於robots.txt,sitemaps會非常有用 - 幾乎任何東西。 – simnom

+0

抱歉沒注意。爐排解決方案。 –

2

您的htaccess文件丟失一行:)

RewriteEngine on 
RewriteCond $1 !^(main\.php|images|robots\.txt|styles) 
RewriteRule ^(.*)$ /main.php/$1 [L] 

你可以把你的風格目錄中的RewriteCond線。例如,我添加了樣式。

更多信息here

+0

此外,您必須在此處添加您希望訪問的任何網址。否則,他們將被重定向到main.php/$ url頁面(當然,這個頁面不存在)。 – 2011-07-20 07:52:49

1

您可能想看看我現在使用的.htaccess文件。

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt|css|design|img|js) 
RewriteRule ^(.*)$ /a-cat/index.php/$1 [L] 
</IfModule> 

的目錄結構是這樣的:

enter image description here

CSS文件可以以這種方式使用:

<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>css/main.css" /> 
2

我用這個。很好評論,顯然不是我寫的。

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    #Removes access to the system folder by users. 
    #Additionally this will allow you to create a System.php controller, 
    #previously this would not have been possible. 
    #'system' can be replaced if you have renamed your system folder. 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #When your application folder isn't in the system folder 
    #This snippet prevents user access to the application folder 
    #Submitted by: Fabdrol 
    #Rename 'application' to your applications folder name. 
    RewriteCond %{REQUEST_URI} ^application.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #Checks to see if the user is attempting to access a valid file, 
    #such as an image or css document, if this isn't true it sends the 
    #request to index.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    # If we don't have mod_rewrite installed, all 404's 
    # can be sent to index.php, and everything works as normal. 
    # Submitted by: ElliotHaughin 

    ErrorDocument 404 /index.php 
</IfModule> 
0

是一個簡單的回答了這個問題:從笨使用的.htaccess代碼下面給出和你的CSS的路徑,JS和圖片使用BASE_URL函數,如

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase # The path to your project/official/hrm/ 

    #Removes access to the system folder by users. 
    #Additionally this will allow you to create a System.php controller, 
    #previously this would not have been possible. 
    #'system' can be replaced if you have renamed your system folder. 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #When your application folder isn't in the system folder 
    #This snippet prevents user access to the application folder 
    #Submitted by: Fabdrol 
    #Rename 'application' to your applications folder name. 
    RewriteCond %{REQUEST_URI} ^application.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #Checks to see if the user is attempting to access a valid file, 
    #such as an image or css document, if this isn't true it sends the 
    #request to index.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 


</IfModule> 

<IfModule !mod_rewrite.c> 
    # If we don't have mod_rewrite installed, all 404's 
    # can be sent to index.php, and everything works as normal. 
    # Submitted by: ElliotHaughin 

    ErrorDocument 404 /index.php 
</IfModule> 

<link rel="stylesheet" href="<?php echo base_url(); ?>the rest of path to yourfile">