というわけで解決編です。問題だったのは実はurlタグだけではなく、PATH_INFOの値を参照する部分全般に及んでいたようです。SVN版を使っている人は該当するはず。
解決方法はいたって簡単、サイトルートからのURLプレフィックスをurlsでかましてやればよいです。
例. "http://www.example.com/hoge/hage/"をプロジェクトのルートにしたい場合。
settings.pyでURL_PREFIXを書いておいてMEDIA_URLとADMIN_MEDIA_PREFIXを設定する。
URL_PREFIX = 'hoge/hage' MEDIA_URL = '/%s/static/' % URL_PREFIX ADMIN_MEDIA_PREFIX = '/%s/media/' % URL_PREFIX ROOT_URLCONF = 'hoge.urls_prefix'
urls_prefix.pyでは単純にURL_PREFIXをurlに付加する。
from django.conf.urls.defaults import * from django.conf import settings try: URL_PREFIX = settings.URL_PREFIX except: URL_PREFIX = '' urlpatterns = patterns('', (r'^%s/' % URL_PREFIX, include('hoge.urls')), )
デプロイ用のwsgiファイルではPATH_INFOにURL_PREFIXを付加するように書く。
from django.core.handlers.wsgi import WSGIHandler _application = WSGIHandler() def application(environ, start_response): from django.conf import settings try: URL_PREFIX = settings.URL_PREFIX except: URL_PREFIX = '' environ['PATH_INFO'] = '/' + URL_PREFIX + environ['PATH_INFO'] return _application(environ, start_response)
Apacheの設定はスマートにできる。
WSGIScriptAlias /hoge/hage /var/www/www.example.com/hoge/wsgi/django.wsgi
以上です。これで1つのドメイン下に複数のプロジェクトをデプロイできます。ちなみに私は、ルートにRailsアプリがインストールされているサイトにDjangoアプリをデプロイしたりしてました。
これは一例なので、使いやすいように書き換えてもらえばと思います。
追記
これは0.97preでの話です。