我们最近将公司网站迁移到Google应用引擎.我们在网站上遇到了部分链接的区分大小写问题.当服务器上的相应文件夹为小写时,某些链接为大写.这不是我们旧的Windows服务器上的问题.Google应用引擎似乎与网址区分大小写.这导致链接断开.
有谁知道是否有办法让我们的网址在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)
Run Code Online (Sandbox Code Playgroud)
请注意,这不是App Engine中的"错误" - URL区分大小写,并且事情确实有效的唯一原因是Windows与大多数其他平台不同,忽略了大小写.
对于静态文件,添加一个只接受小写文件名的静态处理程序,以及一个接受任一情况的文件名的动态处理程序:
handlers:
- url: /static/([^A-Z]+)
static_files: static/\1
upload: static/.*
- url: /static/.*
handler: tolowercase.py
Run Code Online (Sandbox Code Playgroud)
现在写'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()
Run Code Online (Sandbox Code Playgroud)
编辑:添加了静态文件的解决方案.
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |