El .htaccess básico que puede configurarse para Django tiene el siguiente aspecto:
SetHandler wsgi-script
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(django.wsgi)
RewriteRule ^(.*)$ django.wsgi/$1 [L]
Supongamos que se desea instalar un blog wordpress en public_html bajo el directorio "wordpress" y se desea escribir
http://midominio.com/wordpress/Para evitar que Django ejecute el directorio wordpress como una aplicación wsgi y produzca un error 500 se podría pensar en una solución del tipo:
SetHandler wsgi-script
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(django.wsgi|wordpress)
RewriteRule ^(.*)$ django.wsgi/$1 [L]
O quizás:
SetHandler wsgi-script
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(\/wordpress\/(.*))
RewriteCond %{REQUEST_URI} !(django.wsgi)
RewriteRule ^(.*)$ django.wsgi/$1 [L]
Sin embargo, esto no funcionará correctamente ya que se esta estableciendo el handler SetHandler wsgi-script para todos los archivos y directorios. Para corregir esto podemos probar:
<Files *.php>
SetHandler application/x-httpd-php
</Files>
<Files wordpress/*>
SetHandler application/x-httpd-php
</Files>
<Files />
SetHandler wsgi-script
</Files>
<Files *.wsgi>
SetHandler wsgi-script
</Files>
<Files django.wsgi>
SetHandler wsgi-script
</Files>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(\/wordpress\/(.*))
RewriteCond %{REQUEST_URI} !(django.wsgi)
RewriteRule ^(.*)$ django.wsgi/$1 [L]
También es posible añadir si se desea evitar el index.php (en caso de estar presente)
RewriteCond %{REQUEST_URI} !(index.php)
Quedando como:
<Files *.php>
SetHandler application/x-httpd-php
</Files>
<Files wordpress/*>
SetHandler application/x-httpd-php
</Files>
<Files />
SetHandler wsgi-script
</Files>
<Files *.wsgi>
SetHandler wsgi-script
</Files>
<Files django.wsgi>
SetHandler wsgi-script
</Files>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(\/wordpress\/(.*))
RewriteCond %{REQUEST_URI} !(django.wsgi)
RewriteRule ^(.*)$ django.wsgi/$1 [L]
De esta forma entrando a
http://midominio.com/wordpress/ se cargará wordpress y entrando a
http://midominio.com aparecerá Django o en cualquier url
http://midominio.com/algoNota: es importante borrar la caché del navegador por completo, ya que de otra forma seguirá cargando el acceso previo y parecerá que no esta funcionando correctamente. Con Ctrl+F5 a veces no se borra todo, por lo que se recomienda en las opciones del navegador borrar la caché por completo si se ha accedido previamente.