問題出現(xiàn)
使用DouPHP的時候訪問前臺有時候發(fā)出現(xiàn)前臺的樣式都丟失了,布局都不見了,如下圖
造成這個問題,主要是由于DouPHP的模板編譯機制造成,由于DouPHP采用的Smarty模板引擎,會將模板文件編譯生成編譯緩存文件,然后用戶訪問的時候就會調(diào)取編譯緩存,實現(xiàn)網(wǎng)頁的最終瀏覽。但這個緩存是需要頁面被訪問后才生成的,比如單頁面的模板文件是page.dwt,那么用戶在訪問單頁面的時候系統(tǒng)就會先遍歷緩存目錄里是否已經(jīng)有這個模板文件的編譯緩存,如果沒有則生成。而生成操作,由于我們用的是絕對路徑,就是說編譯文件里寫入的路徑是絕對網(wǎng)址,比如“http://www.domian.com/theme/default/style.css”這樣的絕對路徑,而這個路徑的網(wǎng)址是通過瀏覽器地址欄實時獲取的。
所以問題就出在這,有很多網(wǎng)站管理員會使用多個地址訪問網(wǎng)站,比如在服務(wù)器上調(diào)試,會直接使用服務(wù)器的內(nèi)網(wǎng)地址訪問網(wǎng)站,如果使用內(nèi)網(wǎng)地址訪問,那編譯緩存里就會記錄著內(nèi)網(wǎng)的地址,比如“http://127.0.0.1/theme/default/style.css”,這就造成管理員在內(nèi)網(wǎng)即使使用域名訪問網(wǎng)站也是正常的,因為他的環(huán)境是內(nèi)容,即使編譯緩存里記錄的是內(nèi)容地址,一樣可以正常顯示。但外網(wǎng)用戶訪問的時候訪問網(wǎng)站的時候里面的緩存地址是“http://127.0.0.1/theme/default/style.css”這樣的,就無法找到文件了,就會造成前面說的樣式丟失問題。
當然,上述情況不僅局限于內(nèi)網(wǎng)和外網(wǎng)混著訪問,還出現(xiàn)在同樣類似的場景,總之就是多個地址可以訪問網(wǎng)站,都有可能造成這個問題。
解決問題
方法一,網(wǎng)站管理員使用正確的域名訪問網(wǎng)站后臺,然后點擊后臺右上角的“清除緩存”按鈕,清除后再使用正確的域名瀏覽一遍前臺,使之生成正確的編譯緩存。
方法二,統(tǒng)一站點域名,盡量不要內(nèi)網(wǎng)和外網(wǎng)混著訪問,也不要是有一些臨時域名和正式域名混著訪問。
方法三,通過DouPHP后臺-》系統(tǒng)設(shè)置-》站點網(wǎng)址,這里輸入正式域名,格式為:http://www.domain.com/,以斜桿結(jié)束,如果啟用https則以https://開頭,然后后續(xù)訪問后臺的時候一定也要是有這個域名,訪問后臺千萬不要一會使用這個域名一會使用另一個域名。
多域名
上述解決問題的方法,并不是說不允許一個網(wǎng)站有多個域名,比如很多網(wǎng)站會將多個域名指向同一個網(wǎng)站,這個操作是可以的,但無論是為了避免出現(xiàn)上述問題,還是出于多搜索引擎的優(yōu)化來說,都應(yīng)該將所有多出來的域名通過規(guī)則做301跳轉(zhuǎn)到主域名。