Foros del Web » Administración de Sistemas » Apache »

[SOLUCIONADO] [Duda] Mod Rewrite

Estas en el tema de [Duda] Mod Rewrite en el foro de Apache en Foros del Web. Buenas tardes/noches! Tengo una duda con el mod redwrite. Mis webs utilizan el index.php como controlador, es decir todas las url pasan por el index ...
  #1 (permalink)  
Antiguo 05/12/2016, 13:26
 
Fecha de Ingreso: diciembre-2010
Mensajes: 180
Antigüedad: 14 años
Puntos: 5
[Duda] Mod Rewrite

Buenas tardes/noches! Tengo una duda con el mod redwrite.

Mis webs utilizan el index.php como controlador, es decir todas las url pasan por el index y este hace un filtro mediante un switch según el parámetro que se pase por la url para mostrar cierta página.

ej: dominio.com/index.php/home

Visualmente es similar a Joomla (digo visualmente porque no creo que Joomla utilice este mismo método)

Mi duda es, hay manera de quitar el "index.php/" de la url con mod rewrite?

Probé esto:
Código Apache:
Ver original
  1. ## Mod_rewrite in use.
  2. RewriteEngine On
  3. RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /index\.php/[^\ ]+
  4. RewriteRule ^index\.php/(.*)$ /$1 [L,R=301]

Pero no me funcionó, me tira "Not found" en todas las páginas

Desde ya muchas gracias
__________________
WWW.LLORK.COM - El futuro es nuestro
Blog de descargas, tutoriales, guías, noticias y más.
  #2 (permalink)  
Antiguo 06/12/2016, 03:36
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 11 años, 5 meses
Puntos: 401
Respuesta: [Duda] Mod Rewrite

Prueba con esta sintaxis.
Código Apache:
Ver original
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteRule ^index\.php$ - [L]
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6. RewriteRule . /index.php [L]
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-
  #3 (permalink)  
Antiguo 06/12/2016, 09:55
 
Fecha de Ingreso: diciembre-2010
Mensajes: 180
Antigüedad: 14 años
Puntos: 5
Respuesta: [Duda] Mod Rewrite

Cita:
Iniciado por lauser Ver Mensaje
Prueba con esta sintaxis.
Código Apache:
Ver original
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteRule ^index\.php$ - [L]
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6. RewriteRule . /index.php [L]
Hola! Muchísimas gracias por responder, con un pequeño cambio en mi script esto me funcionó de maravilla :) Lo explico para el que tenga ganas de leer y pueda llegar a servirle.

Mi index.php es algo así:

Código PHP:
Ver original
  1. $parametros = secureParamToSql($_SERVER['PATH_INFO']);
  2. $parametros = preg_replace('/^(\/)/','',$parametros);
  3. $parametros = explode('/',$parametros);
  4. $accion = strlen($parametros[0]) > 0 ? $parametros[0] : "home";
  5. switch($accion) {
  6.     case "home":
  7.         $inc = "home.php";
  8.         $titulo_pag = "Inicio";
  9.         break;
  10.     case "servicios":
  11.         $inc = "servicios.php";
  12.         $titulo_pag = "Servicios";
  13.         break;     
  14.     default:
  15.         $inc = "home.php";
  16.         $titulo_pag = "Home";
  17. }
  18. include('header.php');
  19. include($inc);
  20. include('footer.php');

Lo que hace es según el parámetro que se le pase en la barra de navegación, filtrar mediante un switch e incluir la página correcta, si el parámetro está vacío o no es correcto, incluye el home.

Para que el mod rewrite que me facilitó el amigo @lauser funcione, tuve que cambiar la primer linea por:
Código PHP:
Ver original
  1. $parametros = secureParamToSql($_SERVER['REQUEST_URI']);

Esto es porque el script tomaba lo que estaba después del index.php (esta es la función del PATH_INFO), con REQUEST_URI toma la página a la que se accede después de la primera "/", ej: dominio.com/index.php.

Al pasarle entonces dominio.com/servicios, envía el parámetro "servicios" al switch y funciona correctamente

Gracias por la ayuda! Espero esto pueda ser útil para alguien en algún momento. Marco como solucionado, saludos!
__________________
WWW.LLORK.COM - El futuro es nuestro
Blog de descargas, tutoriales, guías, noticias y más.
  #4 (permalink)  
Antiguo 16/12/2016, 11:13
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 11 años, 5 meses
Puntos: 401
Respuesta: [Duda] Mod Rewrite

Bueno, eso es cuestión de secuenciar la cadena. Tan solo era un ejemplo.
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-

Etiquetas: 301, mod, php, rewrite, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:04.