我們最近將公司網站移至Google應用引擎。我們遇到了網站中某些鏈接的大小寫敏感問題。當服務器上的相應文件夾爲小寫時,某些鏈接爲大寫。這在我們的舊windows服務器上不是問題。 Google應用引擎似乎對網址區分大小寫。這導致鏈接斷開。關閉Google App Engine中區分大小寫的網址
有誰知道是否有辦法讓我們的URL在Google應用引擎上不區分大小寫?
我們最近將公司網站移至Google應用引擎。我們遇到了網站中某些鏈接的大小寫敏感問題。當服務器上的相應文件夾爲小寫時,某些鏈接爲大寫。這在我們的舊windows服務器上不是問題。 Google應用引擎似乎對網址區分大小寫。這導致鏈接斷開。關閉Google App Engine中區分大小寫的網址
有誰知道是否有辦法讓我們的URL在Google應用引擎上不區分大小寫?
這是用於靜態文件還是動態處理程序?動態處理程序,你可以隨便寫一段WSGI中間件的那個較低情況下,所有的URI:
def lower_case_middleware(environ, start_response):
environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'].lower()
environ['PATH_INFO'] = environ['PATH_INFO'].lower()
return application(environ, start_response)
請注意,這不是在App Engine的一個「錯誤」 - 網址區分大小寫,唯一的理由事情確實奏效了,因爲與大多數其他平臺不同,Windows忽略了這種情況。
對於靜態文件,添加一個靜態處理程序,只接受小寫的文件名,並接受任何一種情況下的文件名動態處理函數:
handlers:
- url: /static/([^A-Z]+)
static_files: static/\1
upload: static/.*
- url: /static/.*
handler: tolowercase.py
現在寫「tolowercase.py」,即重定向任何處理程序混合大小寫文件名到較低版本:
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class LowerCaseRedirecter(webapp.RequestHandler):
def get(self, path):
self.redirect('/static/%s' % (path.lower(),))
application = webapp.WSGIApplication([('/static/(.*)', LowerCaseRedirecter)])
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
編輯:添加了靜態文件的解決方案。
我越來越錯誤爲'意外屬性'處理程序' – 2010-08-17 20:14:14
我是AppEngine的新手。你能解釋我如何實現這一點。 – 2010-08-17 20:24:47
你需要粘貼你的代碼給我幫助。也許開始一個新的問題? – 2010-08-18 07:23:07
我不知道內置的方式。
我能想到的是,您需要爲/(.*)創建一個處理程序,然後編寫一些代碼將請求轉發給正確的處理程序。
哪裏斷鏈?在你的代碼或客戶端的書籤中? – 2009-09-15 22:04:00
在HTML代碼中。問題出在靜態文件上。 – JohnCooperNZ 2009-09-16 13:04:36
我只是有一個頓悟 - 看到我更新的迴應。 :) – 2009-09-16 18:05:42