Nginx の背後で Django を実行していfastcgi_pass
ます。のようなサブパスで Django を実行し/django/sample
ます。
location /django/sample {
include fastcgi_params;
fastcgi_pass 127.0.0.1:8025;
}
私FORCE_SCRIPT_NAME
は Django 設定モジュールで使用します。これにより、サブパスでの実行に関して発生していたすべての問題が修正されるようです。
settings.py で:
FORCE_SCRIPT_NAME = "/django/sample/"
私はここに行き、管理者でログインします (そして、管理者 UI を正しく取得します):
http://server/django/sample/admin
しかし、送信すると、次のようにリダイレクトされます。
http://server/django/sample/django/sample/admin
本当に奇妙なのはFORCE_SCRIPT_NAME=""
、ログインを変更すると機能することです。
しかし、管理ページのすべてのリンクは/admin
、そうではありません/django/sample/admin/
私は一体何が欠けているのですか?設定FORCE_SCRIPT_NAME="/django/sample/"
により、管理者ログインを除くすべてが修正されるようです。
何か案は?
アップデート:
また、nginx confで使用fastcgi_split_path_info
してみました(および設定で取り出しFORCE_SCRIPT_NAME
ます)。繰り返しますが、これにより、管理者ログインのリダイレクトを除くすべてのパスの問題が修正されます。
conf を次のようにします。
location /django/sample {
fastcgi_split_path_info ^(/django/sample)(.*)$;
include fastcgi_params;
fastcgi_pass 127.0.0.1:8025;
}