首頁  >  問答  >  主體

symfony安裝完成後進入首頁,css樣式未呈現

效果顯示

#
PHP中文网PHP中文网2713 天前618

全部回覆(4)我來回復

  • 習慣沉默

    習慣沉默2017-05-16 16:46:32

    應該是css檔案不存在引起的,看看目下是否有css資源

    回覆
    0
  • 漂亮男人

    漂亮男人2017-05-16 16:46:32

    不得不說你們這些程式設計師。 。 。

    包括symfony,wiki系統在內的各種系統,
    外加wordpress,inews等等能把地址寫成/index.php/M/V/C 這種類型的,或者寫成 /M/V/C.html 這種類型的,
    有些情況不顯示CSS是很正常的,而且出現的原因,從前端來看,99%都是找不到CSS。
    wordpress用google的字體導致頁面半天不顯示是另一個主題了。

    從後台來說,有些系統如會提供解決方案,例如CI,寫成/index.php/M/V/C 這種類型會找的到CSS,這個就是CI自己比較良心。 (可能有,頭幾天瞅了一下CI的手冊,模糊的記得有這個實現。)也有很多別的東西會給實現,不是僅僅CI給實現了。
    實現原理就是/index.php/css/template.css 他會把/css/template.css當成參數傳給index.php,然後用php給讀出來。

    有些東西就比較坑了,
    他自己要用重寫但是index.php又不提供這種方式,也就直接導致/index.php/css/template.css ,傳進去的參數不工作,直接導致不顯示CSS。
    例如:mediawiki,頭幾天有個人新裝了mediawiki,但沒搞rewrite,他就不會給顯示出來。

    有些伺服器軟體例如nginx,有些情況預設把參數傳進去,
    例如造訪www.test.com/M/V/C,nginx會解析成www.test.com/index.php/M/V/C,遇到那些良心的就會顯示。
    當然有些就傻呼呼的去找伺服器目錄的M/V/C目錄,當然403/404。

    以上說了那麼多,
    看不懂的話,你就當我在自說自話,下面是重點,從深層解析這個問題。

    重點在於:

    重寫機制,或叫做rewrite。
    一般寫php的都會有經驗,網站一定會帶一大波參數,例如www.bbs.com/forum.php?mod=forumdisplay&fid=25

    但是有些php網站就不帶,例如你訪問discuz,http://www.discuz.net/forum-10-1.html 這個範例頁面,網站根目錄肯定不會有forum-10-1.html這個文件了,因為第一是根目錄有寫權限可能會不安全,第二是這個文件需要即時更新,也就是說相當於回到了以前用文字檔當成資料庫的時代,硬碟壓力大而且壞得快。

    當然了這個文件不存在該怎麼辦啊?

    當然這時候伺服器軟體nginx/lighttpd/apache就有作用了。
    apache最簡單,一般的系統會有.htaccess檔案給你,你把這個檔案往網站根目錄一丟就行。
    nginx據說也能用.htaccess文件,但我沒用過,都是手動設定。
    lighttpd必須要手動設定。

    現在你訪問這個文件,
    例如老闆娘nginx,收到了這個請求,肯定對外說哎呀哎呀,來的都是客,別忙活了先坐會吧,馬上給你上茶,然後馬上叫夥計去準備。
    夥計一看老闆娘要上茶,然後就去準備茶葉和開水。
    這裡的伙計自然就是nginx的rewrite模組。
    nginx的模組的寫法:(這裡是重寫http://www.discuz.net/thread-998595-1-1.html這個頁面的)

    rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=&extra=page%3D&page= last;
    

    上面一行程式碼的作用是,
    凡是http://www.discuz.net/thread-998595-1-1.html這種類型的網址,直接給轉換成www.discuz.net/viewthread.php?tid=998595&extra=page%3D1&page=1這種形式。
    當然這行程式碼有點老,新的discuz已經不用這種rewrite規則了。你訪問這個頁面如果是404那不代表我說的錯了。

    類似的規則的htaccess的寫法如下:(這裡是重寫http://www.discuz.net/forum-10-1.html這個頁面的)

    RewriteRule ^(.*)/forum-(\w+)-([0-9]+)\.html$ /forum.php?mod=forumdisplay&fid=&page=&%1
    

    話說回來,
    你這種問題出現的原因是,
    CSS檔被當成參數傳進app_dev.php這裡面了,自然就找不到css了。

    具體解決方法也一併給你:
    第一:百度 symfony rewrite app_dev.php
    第二:重寫機制依賴正規表示式。無論哪個伺服器軟體都逃不了。
    三是分鐘學會正規表示式位址:http://www.jb51.net/tools/zhengze.html

    http://symfony.cn/articles/symfony2-nginx-configuration.html
    請仔細參悟這一行: rewrite ^/app.php/?(.*)$ /$1 permanent;

    順帶:畢業生求實習職缺。

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-16 16:46:32

    同樓上的 用虛擬主機 不要直接存取 入口文件

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 16:46:32

    用命令列進入到專案根目錄,運行:

    app/console assets:install web
    

    回到瀏覽器刷新一下,應該就看到了。原因是安裝完成之後缺少了css等資源檔案的安裝(Windows下可能這樣吧,我沒用Windows玩過sf2),上面的指令會把sf2預設的demo Bundle中的資源檔案安裝到web/bundles目錄下。

    希望能幫到你。

    回覆
    0
  • 取消回覆