Это для статических файлов или динамических обработчиков? для динамических обработчиков, вы можете легко написать кусок 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 - URL, чувствительны к регистру, и единственная причина, все дело в том, что 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()
Редактировать: Добавлено решение для статических файлов.
Где находятся неработающие ссылки? В вашем коде или в закладках клиента? –
В HTML-коде. Проблемы со статическими файлами. – JohnCooperNZ
У меня просто было прозрение - см. Мой обновленный ответ. :) –