2016-02-27 86 views
0

我正在將我的博客從GitHub頁面移植到Google App Engine。我已經建立了我的app.yaml如下。404頁面在訪問靜態目錄中丟失的文件時不顯示

runtime: python27 
api_version: 1 
version: 5 
threadsafe: yes 

handlers: 

- url: /api/.* 
    script: main.app 

- url:/
    static_files: src/_site/index.html 
    upload: src/_site/index.html 

- url: /(.*)/ 
    static_files: src/_site/\1/index.html 
    upload: src/_site/*.* 

- url: /(.*) 
    static_files: src/_site/\1 
    upload: src/_site/(.*) 

error_handlers: 
- file: static/404.html 

您可以直接轉到http://joshuasnidercom.appspot.com/404.html,您可以通過訪問燒瓶應用處理諸如http://joshuasnidercom.appspot.com/api/invalidurl缺頁去,而是要由像靜態文件所涵蓋的任何頁面到我的404頁http://joshuasnidercom.appspot.com/nonexistentpage只是顯示Error: Not Found The requested URL /nonexistentpage was not found on this server.錯誤。

我應該做什麼不同?

+0

靜態/ 404.html在項目的根目錄並與主應用程序上傳? –

+0

它是,它應該是。我也嘗試過'templates/404.html'(所以它會和工作燒瓶404一樣),試着把它放在我的開發服務器上的'404.html'的根目錄下。都沒有工作。有沒有辦法測試一個文件是否與主應用上傳? –

+0

你的意思是它沒有在測試服務器上工作嗎?,以詳細模式上傳,它應該顯示你已經部署了該文件。我通常將默認錯誤文件保留在應用程序的根目錄中。 (請記住相應地更改app.yaml) –

回答

0

我相信你需要在你的視圖文件中創建一個錯誤處理程序。 您可以用下面的代碼做到這一點:

@app.errorhandler(404) 
def page_not_found(e): 
    return render_template("404.html"),404 

您也可以替代404與500,403等,其他錯誤。

+0

謝謝,解決方案是做Tim Hoffman的建議,並確保我所有的靜態目錄都是先處理好的,所以如果他們有404,它會通過main.app並使用它已有的404處理程序。 –