Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2009, 17:26
gustavo.morales
 
Fecha de Ingreso: junio-2007
Ubicación: Barranquilla
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Modulo Rewrite dos condiciones y un SINO

Saludos a todos,

Les pido una pequeña ayuda, ya que estoy medio nuevo con estas rewrite tules tan complejas

Quiero convertir todas la URL amigables asi que todas las peticiones que no tienen slash se los agrego en el primer y segundo nivel

Código:
RewriteRule ^([_0-9a-z-]+)$ /$1/ [R]
RewriteRule ^([_0-9a-z-]+)/([_0-9a-z-]+)$ /$1/$2/ [R]
En mi sitio tengo archivos y directorios como
Código:
acerca-de.php
contacto.php
anuncios/
Como todas las direcciones que llegan terminan en slash yo pregunto si no es directorio debe ser un archivo asi que

Código:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([_0-9a-z-]+)/$ /$1.php [L]
por ejemplo misitio.com/acerca-de/.

Que pasa si es misitio.com/anuncios/, nada ya que no hay ninguna condicion para el y no tomara la primera que tiene la condicion SI NO ES DIRECTORIO

El problema viene cuando no es ninguno de los dos si no es un archivo ni un directorio, por ejemplo misitio.com/noticias/ y quiero invocar la direccion index.php?f=noticias con:

Código:
^([_0-9a-z-]+)/$ /index.php=f=$1 [L]
Pero no funciona al paracer el [L] de la primera condicion no frena al coincidir, les anexo el codigo completo

Gracias!!!

Código:
Options +FollowSymLinks 
RewriteEngine on 

RewriteRule ^([_0-9a-z-]+)$ /$1/ [R]
RewriteRule ^([_0-9a-z-]+)/([_0-9a-z-]+)$ /$1/$2/ [R]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([_0-9a-z-]+)/$ /$1.php [L]
RewriteRule ^([_0-9a-z-]+)/([_0-9a-z-]+)/$ /$1/$2.php [L]

RewriteRule ^([_0-9a-z-]+)/$ /index.php=filter=$1 [L]
Gracias por cualquier ayuda