Djangoでreverse後のURLにスクリプト名が入ってしまう

スポンサーリンク

レンタルサーバー上にCGIとしてDjangoを動かそうとしていて、このチケットのdjango.cgiを配置し、.htaccessでmod_rewriteの設定を

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.cgi/$1 [QSA,L]

このような感じにして一応動いてはいたのですが、テンプレートタグから{% url %}で

r’^hoge/$’

への逆引きをしたつもりのURLが、

/django.cgi/hoge/

のようにrewrite後のスクリプト名が付いたURLになってしまっていました。

ドキュメントにはDjangoはなるべく自動的にrewrite前のURLを探すと書いてあったんですが、それが上手くいっていないようで。
で調べた所、そういう時はsettings.pyでFORCE_SCRIPT_NAMEを設定すれば良いようです。

FORCE_SCRIPT_NAME = ''

でとりあえず解決。
細かい原因はよくわかってません。

参考
Forcing the URL prefix to a particular value
URL のプレフィクス部分を特定の値にする

スポンサーリンク
スポンサーリンク
Python
シェアする
フォローする