Foros Programación Servidor

Ayuda con esta expresión regular

2 2 Respuestas Jueves 24 de noviembre, 2011
Buenas, en una tienda online se han cambiado los enlaces de todos los productos al haber cambiado el sistema utilizado, por lo que me interesa hacer una redirección htaccess de los enlaces viejos a la búsqueda del nombre de esos productos.

ejemplo.

Enlace en google : www.tienda.com/producto-muy-bonito-p-4567.html

Lo que quiero es que al acceder a ese link, se redirija a search.php?search_query=producto+muy+bonito

Por ahora tengo lo siguiente:

RewriteRule ^([a-zA-Z0-9-]*)-p-([0-9]+)\.html /search.php?search_query=$1

Esto hace que la url

www.tienda.com/producto-muy-bonito-p-4567.html

se transforme en:

www.tienda.com/search?search_query=producto-muy-bonito

Como modifico mi expresión regular para que cambie además los - por + ? Hay que tener en cuenta que el numero de - es variable, la url puede ser tanto producto-muy-bonito como producto-bonito o producto-muy-bonito-y-largo

Gracias
Registrado desde 12/09/11
Número de posts: 4
  • Avatar de chusete chusete Registrado desde 06/11/11 / Número de posts: 14
    RewriteBase /
    RewriteRule (.*)\-(.*) $1+$2 [N]
    RewriteRule ([a-zA-Z0-9+]*)\+p\+([0-9]+)\.html index.php?search_query=$1 [R]

    * La primera regla, define el raíz.
    * La segunda, sustituye - por +. El flag [N] hace que se repita.
    * La tercera, realiza la redirección a la nueva URL (he añadido el flag [R] para que lleve a cabo la redirección en el navegador).

    Quizás desees poner un RewriteCond antes de la segunda regla, para que sólo aplique la sustitución a determinadas URLs que cumplan un patrón.

    Un saludo! :)
    /*****************************************************************/
    Programador freelance de aplicaciones web. Experto en PHP, jQuery, HTML5, CSS3, Wordpress, etc. Echa un vistazo a mi perfil y a mi portfolio para conocer más.
    Publicado hace 6 meses
  • Avatar de Rodrerick Rodrerick Registrado desde 12/09/11 / Número de posts: 4
    Gracias Chusete, no he podido probarlo aún, hice el paso de los - por + mediante php, pero probaré tu solución ,que a mi gusto es más limpia
    Publicado hace 6 meses