1. 程式人生 > >修改WordPress主題導致整個站點404無法訪問

修改WordPress主題導致整個站點404無法訪問

今天下午發現自己用WordPress搭建的站點www.hainter.com的主題有一些bug,決定對其進行一些修改。

由於主題原先並不是自己設計的,是在知更鳥的Ality主題基礎上修改的,所以對於裡面的每個檔案之前並沒有做過很多深入研究。

改了一下午,在本地用USBWebServer實現的站點中進行除錯通過,然後用FTP客戶端上傳到站點,直接替換現有主題。替換完了重新整理頁面竟然無法訪問了,瀏覽器中顯示404錯誤。

遇到這個錯誤,第一反應是網路的問題,因為是國外伺服器,偶爾出現404感覺也正常。重新整理了幾次還是404,開啟百度正常,說明能上網,之前也沒出現過這種404錯誤。開啟cmd輸入ping hainter.com發現可以ping通,另外FTP也可以連線上,看來很可能不是網路的問題了。

然後用手機Chrome瀏覽器試了一下,發現也打不開,提示無法識別內容。這次排除了電腦的問題。

於是問題很可能就出在主題上了,因為剛剛改動的主題。首頁打不開,可能是首頁的一些程式程式碼有錯,然後就輸入了其他頁面的地址,也都打不開。直接輸入網站後臺的地址,竟然也打不開,顯示的錯誤也是一樣。一般情況下,如果主題出錯,至少不至於影響後臺,畢竟後臺介面都是WordPress自帶的,不需要過多的依賴主題。

沒辦法,這時只能通過FTP來解決問題了。把當前用的主題資料夾改名了,再把另一個主題改成當前主題的資料夾名,結果一重新整理竟然就可以訪問了。

由於主題在本地除錯一切正常,按理說主題應該不會有問題的,可能是FTP傳輸出錯。就把主題檔案全部重新傳了一遍,還特地對比了一下檔案大小。在網站後臺的主題設定介面,點選預覽主題,發現其他的主題都可以預覽,但是一點開今天修改的主題,整個頁面就什麼都沒有。

在網上找了一圈,WordPress 主題 404,但是找到的結果都說的是WordPress主題中新增404頁面,沒有找到我需要的結果。

由於所有的頁面都打不開,所以猜測可能出題處在一些公共的檔案中,例如header.php,footer.php中。因為有修改之前能用的版本,所以從網上找了個資料夾內容對比軟體Beyond Compare,對資料夾進行對比,由於主題中檔案很多,發現一下午很多檔案都被改過,一下子也不好檢查是哪些檔案的問題。

決定通過檔案直接替換的方式找到錯誤所在。開啟WordPress的除錯模式(wp-config.php中修改define('WP_DEBUG', true)),設定成修改前可用的主題版本。每次上傳若干主題檔案的新版本,覆蓋舊版本,重新整理頁面可訪問,則初步排除這些檔案。最後錯誤檔案定位到了一個子資料夾中的十個檔案(也就是這十個新版本檔案覆蓋進去,網站就打不開了)。再把舊版本檔案一個一個替換新版的檔案,終於有個檔案被替換成舊版本後又能訪問了,於是找到了問題檔案。

對比了一下這個檔案的兩個版本,只有很短的幾行,唯一的區別是編碼不一樣。原先的檔案是ANSI編碼,我用SublimeText開啟時發現顯示的是亂碼(Sublime預設使用UTF-8編碼顯示),就用Notepad++將其轉換成了UTF-8編碼儲存,在Sublime中開啟就沒有亂碼了。本來沒在意這個,覺得編碼應該沒啥問題,何況其他的檔案也是UTF8編碼。

這次具體的看了一下,發現其他的檔案在Notepad++中顯示的全部都是UTF-8無BOM格式,而這個檔案被我轉換的是UTF-8格式。修改了編碼格式,再上傳,竟然就一切正常了。


在本地使用很正常,到了遠端伺服器上就不能用了,可能是伺服器配置的原因吧。於是記錄下來,沒準有人也會遇到這個問題,可以作為參考。