Первым шагом является добавление
AddHandler wsgi-script .wsgi
в ваш файл .htaccess, и ничто иное не устанавливает wsgi в качестве обработчика.Это приведет к тому, что запросы к django.wsgi и django.wsgi / что угодно перейдут в ваше приложение django.
Чтобы часть django.wsgi в URL исчезла, вам необходимо использовать mod_rewrite.Надеюсь, на вашем хосте это включено.Примером является
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]
, который будет обслуживать файл, если URL соответствует файлу, или будет обслуживаться django, если это не так.Другим вариантом будет
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^/?static/
RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]
, чтобы запросы / static / * отправлялись к самому файлу, а все остальное проходило через django.
Тогда вам нужно будет скрыть django.wsgi изсгенерированные URL.Это можно сделать с помощью подобного фрагмента в вашем django.wsgi
def _application(environ, start_response):
# The original application.
...
import posixpath
def application(environ, start_response):
# Wrapper to set SCRIPT_NAME to actual mount point.
environ['SCRIPT_NAME'] = posixpath.dirname(environ['SCRIPT_NAME'])
if environ['SCRIPT_NAME'] == '/':
environ['SCRIPT_NAME'] = ''
return _application(environ, start_response)
Если это не совсем правильно, то обязательно обратитесь к http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines. Я потянул большую частьподробности ответа оттуда, но только шаг за шагом собраны правильные части.