2017-07-15 29 views
0

我正在編寫自己的MVC實現,並且遇到包括本地CSS文件在內的問題。基本上,我的應用程序中的所有請求都會轉化爲分解它們以獲取控制器和操作的方法。例如:在PHP中加載include時忽略CSS文件

localhost:8888/items/list 這個請求將被重定向到我的index.php在那裏我有:

Application::start($_SERVER['REQUEST_URI']);

然後請求被分解,以獲得控制器「項目」和行動「清單」 到目前爲止所有的都很好,我沒有意識到這個問題,因爲我使用CDN引導。但是現在如果我包括我的HTML類似:

<link rel="stylesheet" type="text/css" href="/css/style.css"> 

這將再次去我的方法和它不會工作。 我想什麼是檢查URI包含「CSS」,如果它不只是包括與文件:

if(preg_match('/css/',$uri)){ 
include "../webroot/$uri";} 

這個工作中加載CSS的條款,但CSS被忽略。我還得到

「資源解釋爲樣式表,但使用MIME類型text/html傳輸:」http://localhost:8888/css/style.css「。」

如果我嘗試包含圖像,但問題甚至更大,儘管圖像至少可以通過「包含」顯示它們。任何想法如何解決這一問題 ?

PS我知道,因爲CSS加載爲文本文件中的問題是最有可能的,但我不知道怎麼去用我的當前設置

+0

你試過localhost:8080/project_name/css/style.css嗎? –

+0

加載css本身沒有問題,問題是由於某種原因完全忽略它。 – martini

+0

當然,很可能你的腳本發送了錯誤的頭文件。到PHP這只是文字。你需要發送特定的頭文件來表明這個響應實際上是_is_ css規則。 – arkascha

回答

1

這方面的工作儘量header("Content-type: text/css; charset: UTF-8");file_get_contents,而不是包括這樣

if(preg_match('/css/',$uri)){ 
    header("Content-type: text/css; charset: UTF-8"); 
    if(!$file = file_get_contents("http://localhost:8080/project_name/webroot/$uri")) return 0; 
    echo $file; 
}