S'agit-il de fichiers statiques ou de gestionnaires dynamiques? pour les gestionnaires dynamiques, vous pouvez facilement écrire un morceau de middleware WSGI que les cas inférieurs-tous les URIs:
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)
Notez que ce n'est pas un « bug » dans App Engine - Les URL sont sensibles à la casse, et la seule raison les choses ont fonctionné parce que Windows, contrairement à la plupart des autres plates-formes, ignore les cas.
Pour les fichiers statiques, ajouter un gestionnaire statique qui accepte uniquement les noms de fichiers minuscules, et un gestionnaire dynamique qui accepte les noms de fichiers de deux cas:
handlers:
- url: /static/([^A-Z]+)
static_files: static/\1
upload: static/.*
- url: /static/.*
handler: tolowercase.py
Maintenant, écrivez « tolowercase.py », un gestionnaire qui redirige tout nom de fichier de casse mixte à la version à boîtier inférieur:
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()
Modifier: Ajout d'une solution pour les fichiers statiques.
Où sont les liens brisés? Dans votre code ou dans les signets du client? –
Dans le code HTML. Les problèmes sont avec les fichiers statiques. – JohnCooperNZ
Je viens d'avoir une révélation - voir ma réponse mise à jour. :) –