Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Diabliyo en 5 Octubre 2012, 22:54 PM

Título: [RewriteRule] No encuentro como hacer esta regla ! (solved)
Publicado por: Diabliyo en 5 Octubre 2012, 22:54 PM
Buenas.

Tengo un sitio en donde quiero tratar los datos de la URL de forma muy especifica, les cuento:

http://miweb.com/servicios/
Quiero que practicamente me pase la palabra "servicios" a una variablGET para consultar mis secciones con el nombre de "servicios".

http://miweb.com/opcion (no uso slash ' / ' al final).
Quiero tratar la palabra "opcion" de otra forma..

Las reglas que puse son:

RewriteRule ^(.+)/$ index.php?id=$1 [L]
RewriteRule ^(.+)[^/]$ index.php?id=ref&data=$1


Asi tal cual, tengo que comentar la segunda linea, porque al escribir en mi url "http://miweb.com/servicios/", intenta pasar "servicios" asi:

index.php?id=ref&data=servicios

Al comentar la segunda linea, la web funciona casi bien, ya que al escribir "miweb.com/servicios/", me manda:

index.phpid=servicios.

Pero si escribo: miweb.com/opcion

Me sale not found :S

Alguna idea ?
Título: Re: [RewriteRule] No encuentro como hacer esta regla !
Publicado por: Diabliyo en 5 Octubre 2012, 22:59 PM
Cambie el orden de las reglas pensando que funciono, y no tampoco....

RewriteRule ^(.+)$ index.php?id=ref&data=$1
RewriteRule ^(.+)/$ index.php?id=$1 [L]


Sigue sin funcionar !
Título: Re: [RewriteRule] No encuentro como hacer esta regla !
Publicado por: #!drvy en 6 Octubre 2012, 00:45 AM
CitarRewriteRule ^(.+)[^/]$ index.php?id=ref&data=$1

Con el . ,que yo sepa le dices que sea cualquier carácter menos \n (nueva linea).. por tanto se pasa por el **** si quieres que funcione solo cuando no incluya el shash (/)  :xD.

Yo lo haría así:
Código (apache) [Seleccionar]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.+)/$ index.php?id=$1
RewriteRule ^([a-z0-9_-]+)$ index.php?id=ref&data=$1 [NC]
</IfModule>


Resultado:

http://miweb.com/servicios/ retorna:
Código (apache) [Seleccionar]
Array ( [id] => servicios )

http://miweb.com/opciones retorna:
Código (apache) [Seleccionar]
Array ( [id] => ref [data] => opciones )


Saludos
Título: Re: [RewriteRule] No encuentro como hacer esta regla !
Publicado por: Diabliyo en 6 Octubre 2012, 04:28 AM
Cita de: drvy | BSM en  6 Octubre 2012, 00:45 AM
Con el . ,que yo sepa le dices que sea cualquier carácter menos \n (nueva linea).. por tanto se pasa por el **** si quieres que funcione solo cuando no incluya el shash (/)  :xD.

Yo lo haría así:
Código (apache) [Seleccionar]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.+)/$ index.php?id=$1
RewriteRule ^([a-z0-9_-]+)$ index.php?id=ref&data=$1 [NC]
</IfModule>


Resultado:

http://miweb.com/servicios/ retorna:
Código (apache) [Seleccionar]
Array ( [id] => servicios )

http://miweb.com/opciones retorna:
Código (apache) [Seleccionar]
Array ( [id] => ref [data] => opciones )


Saludos

Lo he escrito tal cual me dijiste, y no funciona cuando accedo al url: http://miweb.com/servicios/, sale: Not Found.

Solo funciona cuando accedo url: http://miweb.com/opcion, envia:
index.php?id=ref&data=opcion

Saludos !
Título: Re: [RewriteRule] No encuentro como hacer esta regla !
Publicado por: #!drvy en 6 Octubre 2012, 04:54 AM
o.O

Eso si que es extraño xD... seguro que no te olvidaste la barra inclinada (/) antes del $ ? Yo lo acabo de probar por 9999999 vez y funciona tan normal...

Saludos
Título: Re: [RewriteRule] No encuentro como hacer esta regla !
Publicado por: Diabliyo en 6 Octubre 2012, 06:11 AM
Me retracto... Si funciono !

Habia puesto en el RewriteRule "indx.html", me falto la "e".

Y ya funciono....

Disculpa sabes de un buen manual para aprender sobre los patrones o sintaxis en RewriteRules ?

Saludos !