Quijost

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Búsqueda Avanzada  

Noticias:

Quijost.com - Hosting Gratis al alcance de tus manos

Autor Tema: Configurar .htaccess para evitar ejecución Django en otros directorios  (Leído 5182 veces)

0 Usuarios y 1 Visitante están viendo este tema.

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 487
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran

El .htaccess básico que puede configurarse para Django tiene el siguiente aspecto:

Código: [Seleccionar]
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:

Código: [Seleccionar]
SetHandler wsgi-script

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(django.wsgi|wordpress)
RewriteRule ^(.*)$ django.wsgi/$1 [L]

O quizás:

Código: [Seleccionar]
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:

Código: [Seleccionar]
<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)

Código: [Seleccionar]
RewriteCond %{REQUEST_URI} !(index.php)
Quedando como:

Código: [Seleccionar]
<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/algo

Nota: 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.
« última modificación: Septiembre 08, 2012, 04:56:27 am por shakaran »
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support
 

Página generada en 0.085 segundos con 33 consultas.