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: Pequeña duda sobre el mod_rewrite  (Leído 3030 veces)

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

~Zant Corporation~

  • Usuario nuevo
  • *
  • Karma: +0/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 7
    • Ver Perfil
Pequeña duda sobre el mod_rewrite
« en: Octubre 13, 2012, 17:46:12 pm »

Hola a todos, vengo desde el soporte técnico de Quijost para plantear un problema que me ha surgido con mod_rewrite en el servidor compartido que tengo contratado.
Me gustaría redireccionar todos los archivos .js y .css hacia otra dirección. Sin embargo esto solo funciona cuando el archivo no existe, si este existe devuelve el archivo normal en lugar de redireccionarlo.
Este es el código que estoy usando en mi archivo .htaccess:

Código: [Seleccionar]
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^([^/.]+)$ $1.php [L]
  RewriteCond %{REQUEST_URI} !^.*jquery.*$
  RewriteCond %{REQUEST_FILENAME} -F
  RewriteRule ^(.*\.)(js|css)$ /min/?f=$1$2
</IfModule>
Nótese que uso el parámetro -F para comprobar si el archivo existe.

En un servidor local con WAMP funciona perfectamente, sin embargo en Quijost no. No estoy seguro pero creo que puede deberse al cacheado de archivos que usan, el cual puede estar devolviendo los archivos de su caché en lugar de volver a hacer la petición.

¿Podrían ofrecerme alguna solución a esto?
Saludos!
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 485
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:Pequeña duda sobre el mod_rewrite
« Respuesta #1 en: Octubre 13, 2012, 19:18:54 pm »

Hola Zant,

Las reglas mod_rewrite con expresiones regulares siempre han sido un poco complicadas. En principio nginx aunque cachee los resultados, lo hace primero consultando resultados previos en Apache o copia en cache generada. Antes de ello, debe pasar por el módulo mod_rewrite de apache a más bajo nivel. En nuestro modo de servidor compartido por lo tanto nginx sólo actúa como capa proxy y no como capa principal (ya que servimos con apache + nginx para dar posibilidad a otros módulos como mod_wsgi (para python), mod_passenger (para ruby), mod_php, etc).

Podemos ayudarte a resolver el problema proponiendote dos soluciones:

1) Habilitar de forma temporal en tu virtualhost la directiva RewriteLog de apache con un nivel apropiado que te permita entender mejor que es lo que esta sucediendo con las redirecciones.
Esta solución es la más apropiada, pero sólo puede activarse en el VirtualHost y no mediante .htaccess ya que es una directiva relativa al VirtualHost y necesita permisos root para editar la configuración de Apache. No la activamos ni la ofrecemos por defecto, porque requiere muchas escrituras adicionales de apache en cada petición y por lo general degrada el rendimiento.

Podríamos habilitarla durante algún tiempo para que puedas solucionar el problema o entender donde está fallando alguna regla de mod_rewrite. Una vez solucionado o si no es posible la desactivaríamos.

2) Aplicar un modo de depuración en las propias reglas de mod_rewrite desde el .htaccess.

Puede realizarse con reglas como:

Código: [Seleccionar]
RewriteCond %{QUERY_STRING} !vardump
RewriteRule (.*) http://www.midominio.com/$1?vardump&request=%{THE_REQUEST}&reqhost=%{HTTP_HOST} [R=301,L,QSA]

Esto te permite mediante FireBug o observando las cabeceras http visualizar que valores esta tomando la redirección. Es un método más laborioso, pero tiene la ventaja de poder usarse desde un simple .htaccess sin necesidad de permisos adicionales.
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support

~Zant Corporation~

  • Usuario nuevo
  • *
  • Karma: +0/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 7
    • Ver Perfil
Re:Pequeña duda sobre el mod_rewrite
« Respuesta #2 en: Octubre 15, 2012, 10:09:16 am »

Muchas gracias por la respuesta. Creo que probaré primero con la segunda opción y si no funciona ya comunicaré para que me activen temporalmente el RewriteLog.

Saludos.
En línea
 

Página generada en 0.073 segundos con 24 consultas.