te aclaro en esta parte
Cita:
Iniciado por SUSMO Yo tenia entendido que .* significaba cualquier carácter i que por tanto, también entraban en ese grupo los especiales, no es así?
Podéis indicarme cual es el problema? y cual seria la redirección correcta?
Gracias!
.* en expresiones regulares significa, PUEDE que tenga algun caracter, eso incluye otros simbolos como "/" , ojo ahi eso romperia un poco la estrutura
producto/algo/otro/etc
pero bueno no ocurre por que tomas las primeras coincidencias,
lo correcto seria que hagas uso de ".+" en lugar de ".*"
ahora aqui tienes un problema de diseño
si tienes una URL tipo
/detalle-producto.php?name=esto/es/nombre&id=223
para entrar ahi directamente no hay problema, pero que ocurreo cuando haces uso del modrewrite??
ya que el simbolo "/" es muy exclusivo y tendras que codificarlo para que tu modwrite funcione
tu enlace tendria que tener la forma de
Código HTML:
<a href="producto/esto%2Fes%2Fnombre/223"> producto/esto%2Fes%2Fnombre/223 </a>
o bien como alternativa modificar tu modrewrite, como sabes que tu ID no tendra caracteres RAROS ponerlo al principio, y todo lo que venga , darlo a tu variable "name"
Código HTML:
RewriteRule ^producto/(.+)/(.*)$ /detalle-producto.php?name=$2&id=$1 [QSA]
con eso tu variable "name" se tragara todo lo que venga
y tus enlaces estarian como quisieras
Código HTML:
<a href="producto/223/esto/es/nombre"> producto/223/esto/es/nombre </a>