Use o método descrito em:
Assim, temos a configuração do DocumentRoot como normal para arquivos estáticos e arquivos php, etc. Em seguida, adicione:
AddHandler wsgi-script .wsgi
para o bloco Directory para DocumentRoot, ou globalmente para o servidor.
Você precisará ter:
Options ExecCGI
ativado para o DocumentRoot agora, se você ainda não o fez.
Em seguida, adicione também:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /site.wsgi/$1 [QSA,PT,L]
em que site.wsgi está no DocumentRoot e é o arquivo de script WSGI que mapeia para seu aplicativo Django.
No arquivo de script Django WSGI, altere-o para usar:
import django.core.handlers.wsgi
_application = django.core.handlers.wsgi.WSGIHandler()
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)
Deve ser isso.
Qualquer solicitação mapeada para um recurso real baseado em arquivo em DocumentRoot, seja arquivo estático ou arquivo php, incluindo a configuração por DirectoryIndex, por exemplo, index.php, será tratada normalmente. Qualquer outra URL que, de outra forma, resultaria em 404, será roteada para o aplicativo Django.
O / johnfreep e / pages / john teriam que ter o URL correspondente como se estivesse montado na raiz, no arquivo urls.py.
Se o Django não souber o que fazer com uma URL, o Django retornará 404.
Leia o documento wiki para mais informações.