これはApache/Nginxの問題です。そして、誰かここを参照してください、前のDjangoプロジェクトにこの問題を送信:チケットからhttps://code.djangoproject.com/ticket/15718 と引用符を、回避策があります:
私は第二の問題(アパッチから直接、404エラー)がないことを発見した調査の後djangoに関連し、 "AllowEncodedSlashes On"をapache configに追加することで回避できます。残念ながら、Apacheは%2fを/自身に置き換えているので、動作はdjangoが提供する単純なhttpサーバとまったく同じです。 Apache 2.2.18(これはまだリリースされていません)では、AllowEncodedSlashesは値NoDecodeを許可します。値NoDecodeでは、このようなURLは受け入れられますが、エンコードされたスラッシュはデコードされずにエンコードされた状態のままです。一方、私はコア/ハンドラ/ wsgi.py
でこの問題を回避する代わりに、元
path_info = force_unicode(environ.get('PATH_INFO', u'/'))
の
request_uri = force_unicode(environ.get('REQUEST_URI', u'/'))
if u'?' in request_uri:
path_info,query = request_uri.split('?',1)
else:
path_info,query = request_uri,''
を使用しています