1

我正在使用GAE簡單的靜態網站只有HTML/HTM頁面,圖片等。我也使用Python 2.7。GAE中的簡單靜態網站與自定義404錯誤頁面

所以我使用了一個直接的app.yaml和main.py,並且工作。但是,當訪問一個不存在的頁面時,它會顯示一個標準的404頁面。我想將其更改爲自定義錯誤頁面,並在下面嘗試過,但不起作用。

這裏有我的app.yaml和main.py文件:

application: xxxx 
version: 11 
runtime: python27 
api_version: 1 
threadsafe: true 

default_expiration: "7d" 

inbound_services: 
- warmup 

handlers: 
- url:/
    static_files: index.html 
    upload: index.html 

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

- url: /.* 
    script: main.app 

Main.py:

import webapp2 

class BaseHandler(webapp2.RequestHandler): 
    def handle_exception(self, exception, debug): 
    # Set a custom message. 
    self.response.write('An error occurred.') 

    # If the exception is a HTTPException, use its error code. 
    # Otherwise use a generic 500 error code. 
    if isinstance(exception, webapp2.HTTPException): 
     self.response.set_status(exception.code) 
    else: 
     self.response.set_status(500) 

class MissingPage(BaseHandler): 
    def get(self): 
    self.response.set_status(404) 
    self.response.write('Page has moved. Pls look at http://www.yyyyyy.yy to find the new location.') 

class IndexHandler(webapp2.RequestHandler): 
    def get(self): 
     if self.request.url.endswith('/'): 
      path = '%sindex.html'%self.request.url 
     else: 
      path = '%s/index.html'%self.request.url 

     self.redirect(path) 

    def post(self): 
     self.get() 

app = webapp2.WSGIApplication(
    [ (r'/', IndexHandler), 
     (r'/.*', MissingPage) 
     ], 
    debug=True) 

什麼是不正確的?我找了很多項目,但沒有確切地解釋瞭如何爲一個簡單的網站與Python 2.7爲此,

讓我知道,許多感謝,邁克爾

+0

省略了.yaml文件中的第二個處理程序,你會看到你的main.app你處理的結果。第二個處理程序應該做什麼 - 'static_files':\ 1? – rGil 2013-05-13 19:26:27

+0

謝謝RGIL,這是一個很好的線索,我試圖拿出第二個處理程序,我沒有得到404自定義錯誤頁面。但現在它只有index.html頁面,而不是其他(105)頁面,圖像,樣式表等。 我使用第二個處理程序來處理所有其他頁面。 所以有辦法,我仍然可以提供所有105個文件作爲靜態文件並獲得自定義錯誤頁面。 – user2378683 2013-05-14 03:24:57

回答

2

看起來它並不真的需要有您的網站的任何動態部分,除了404頁面。 有一個error_handlers可以直接使用。

https://developers.google.com/appengine/docs/python/config/appconfig#Custom_Error_Responses

application: xxxx 
version: 11 
runtime: python27 
api_version: 1 
threadsafe: true 

default_expiration: "7d" 

inbound_services: 
- warmup 

handlers: 
- url:/
    static_files: index.html 
    upload: index.html 

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

error_handlers: 
- file: default_error.html