symfony安裝完成後進入首頁,css樣式未呈現
PHP中文网
PHP中文网 2017-05-16 16:44:32
0
4
614

效果顯示

#
PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(4)
習慣沉默

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

漂亮男人

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

包括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;

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

滿天的星座

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

曾经蜡笔没有小新

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

app/console assets:install web

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

希望能幫到你。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!