2012-12-09 55 views
4

這個問題已經被問了好幾次,但我研究,仍然解決不了。我認爲文件中的一個,我已經(引用到我的CSS):笨+ CSS效果不好,可能的BaseURL

link rel="stylesheet" type="text/css" href="/application/views/screen.css" 

CSS文件是:

- www 
    - application 
    - view 
     - css 
     - screen.css 
    - system 

我也試圖設置在同一個文件夾中的CSS -www下和直接

link rel="stylesheet" type="text/css" href="css/screen.css" 

我的基本url使用它,因爲我在當地發展設置爲""。這是問題嗎?我正在使用wamp服務器。

那麼問題是什麼?誰能幫忙?

回答

6

你不能把你的CSS文件或文件送達至瀏覽器的應用程序文件夾,因爲它是保護與設置爲「從所有拒絕」你的CSS,JS,圖像文件等.htaccess文件安全原因,需要在應用程序文件夾之外。

把你的CSS文件中的「www」文件夾,名爲「CSS」的文件夾中,所以它不是內部的「應用」或「系統」。然後確保你使用以下(注意斜線,表示絕對URL):

href="/css/screen.css" 

使用這個代替:

# If your default controller is something other than 
# "welcome" you should probably change this 
RewriteCond $1 !^(index\.php|css) 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

link rel =「stylesheet」type =「text/css」href =「/ css/screen.css」,不起作用。這就是我的谷歌瀏覽器使用網絡工具 – ZhijieWang

+0

顯示的內容這是在將文件移動到webroot文件夾「www」內的名爲'css'的文件夾之後? –

+0

是的,我有一個CSS文件夾下的www文件夾。我檢查元素並查看http請求頭,這是什麼顯示:ht tp://localhost/css/screen.css – ZhijieWang

1

銘記有幾種方法對皮膚一隻貓。

快速修復而不htaccess的搞亂。 使用BASE_URL()或SITE_URL():

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

,並使用以下文件結構:

  • WWW

    • 應用

      • 意見
      • (...)
    • 系統

    • 資產
      • CSS
        • screen.css
+0

@cryptic你其實是錯的。只要URL助手被加載,base_url()就會使用它的名字並返回好的基礎url。無論如何感謝downvote。 – AaronSantos

+0

同意,我更喜歡這種做法,將網址變成一個永久性的網址,而不是一個相對的網址,並且從我的理解中可以看出,這更符合SEO的要求,並且可以節省頭痛。 –

+0

link rel =「stylesheet」type =「text/css」href =「localhost/assets/css/screen.css」這是瀏覽器顯示的內容。我有資產文件夾。 – ZhijieWang

1

你應該把所有的資源文件(圖片,JS,CSS等)到一個單獨的文件夾上的網站(外的應用程序文件夾)的根。 創建一個名爲「文件」文件夾,並在您的.htaccess文件中添加以下行對站點的根目錄:

# Allow these directories and files to be displayed directly: 
# - index.php (DO NOT FORGET THIS!) 
# - robots.txt 
# - favicon.ico 
# - Any file inside of the files/ - js/, or css/ directories 
RewriteCond $1 ^(index\.php|files) 

這樣你就可以直接訪問到(裏的任何文件夾)文件夾通過網址。

+0

我有一個名爲css的文件夾,其中存儲應用程序並更改了重寫引擎。當我輸入ht t:// localhost/assets時,它不起作用,它給了我一個404。順便說一下,我的base_url =''和我正在本地開發,如果這很重要的話。 – ZhijieWang

+0

好吧,爲了看看我是否正確理解你,你在本地主機的根目錄中有一個名爲'assets'的文件夾,在你的.htaccess文件中有一個'assets'重寫條件,你仍然會得到404錯誤? –

+0

https://docs.google.com/document/d/1iEI9J2Ub4gnwmDVYgIeV7Tiig6n1bimRCWlUHBhqyH0/edit這是我的重寫引擎。我仍然可以使用url訪問assets文件夾。在www文件夾下,我有-assets,-appliaction和-system – ZhijieWang

1

我也在Windows中面臨同樣的問題。在Mac中,這很容易。 當試圖從URL中排除index.php時,我遇到了400 Bad Request Error。 後來解決了這個問題,通過在前面斜槓重寫規則的index.php,如下

RewriteRule ^(.*)$ index.php/$1 [L] 

RewriteRule ^(.*)$ /index.php/$1 [L] 

展望未來,面臨着另一個問題: 無法裝載資產/靜態文件。此外,我有我的資產文件夾在根目錄級別。 我看到了一個解決方案,比如在RewriteCond中添加'assets',使它從應用rewriteRule中被排除。 like,

RewriteCond $1 !^(index\.php|assets)  #It does not work for me 

但是,它不起作用。我得到404沒有發現錯誤。 後來,我發現這個解決辦法,因爲

RewriteCond $1 !^(index\.php|\/assets)  #Working! 

而且我重寫劇本在這裏:

RewriteEngine on 
    RewriteCond $1 !^(index\.php|\/assets) 
    RewriteRule ^(.*)$ /index.php/$1 [L] 

希望,這將幫助並節省時間充裕! :)