Cómo redirigir a URL sin barra final en WordPress

Una URL con barra al final es distinta a la misma URL pero sin barra al final. Si tu web carga estas dos versiones… Tienes contenido duplicado.

Para redirigir una URL con barra al final a su versión sin barra al final en WordPress sin errores en WordPress se debe añadir el siguiente código en el htaccess:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301]

Proceso para redirigir de con barra a sin barra

Vamos paso a paso con todo lo que debes hacer para que esto funcione a la perfección.

1. Quita la barra final en ajustes de enlaces permanentes

Dirígete a los ajustes de tu panel de WordPress y selecciona la opción «Enlaces Permanentes» o Permalinks.

Una vez en las opciones selecciona la estructura personalizada y no pongas la barra final:

Vista de los ajustes de enlaces permanentes en el back de WordPress
Vista de los ajustes de enlaces permanentes en el back de WordPress

2. Accede a tu cPanel y dirígete a Administrador de archivos, o accede por FTP

Una vez dentro de tu cPanel debes clicar sobre el Administrador de archivos o también puedes acceder a los archivos por FTP con un programa como Filezilla.

Vista de cPanel para acceder al Administrador de archivos
Vista de cPanel para acceder al Administrador de archivos

3. Accede al archivo .htaccess

Una vez dentro de tu carpeta public_html, o en la del dominio que quieres tocar si es el caso, debes localizar el archivo .htaccess.

¿No lo encuentras? Clica en el botón de ajustes, en la esquina superior derecha, y marca la opción de «mostrar archivos ocultos (dotfiles)»

mostrar-archivos-ocultos-cpanel
Configuración en el Administrador de archivos para mostrar archivos ocultos

Una vez hecho esto se mostrará el archivo, debes seleccionarlo y en el menú superior clicar sobre el botón «Editar».

4. Edita el archivo .htaccess

Añade al principio o al final del archivo las siguientes líneas y guarda:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301]

¡Y listo!

EXTRA: ¿Y si lo quieres hacer al revés? Cómo redirigir siempre a la versión con barra final

Es preferible la versión sin barra al final de cara al SEO, pero si la web ya tiene casi todas sus URL posicionadas con la barra final, ni se te ocurra cambiar todo, podrías tener problemas.

OJO: En esta redirección afectarás negativamente a archivos que nunca llevan barra al final, para evitarlo necesitarás poner excepciones, por eso el código es más largo.

En ese caso el código cambia, es el siguiente:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/sitemap.xml
RewriteCond %{REQUEST_URI} !^/page-sitemap.xml
RewriteCond %{REQUEST_URI} !^/post-sitemap.xml
RewriteCond %{REQUEST_URI} !^/sitemap_index.xml
RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-json/
RewriteRule ^(.*[^/]$) $1/ [R,QSA,L]

Mismo procedimiento anterior, pero distinto código 😀

Conclusión

A partir de ahora se redirigirá de la versión con barra al final a la que no la lleva.

Esto generará redirecciones cada vez que añadas un enlace con la barra al final. Estas redirecciones no son penalizadas, pero sí pueden afectar negativamente al SEO, ya que Google no quiere que tengas tu web llena de redirecciones porque éstas afectan al tiempo de rastreo, esto hará entonces que baje tu presupuesto de rastreo… a tener en cuenta en webs grandes.

Espero que te haya resultado útil 😀

Un saludo!

4 comentarios en «Cómo redirigir a URL sin barra final en WordPress»

  1. Hola! Gracias por la ayuda del post, lo que me paso al utilizar el código para que siempre rediriga a la url con barra al final funciono, pero cuando realizo cambios de contenido o edición no se guardan los cambios.

    Puede ser que tenga que cambiar algo en el código?

    Responder
    • Es posible que no hayas añadido las excepciones del final, piensa que si le pones una barra al final a las urls de wordpress, que terminan en .php por ejemplo, no funcionan, debes añadir esas excepciones del final del post. Dime si te funcionan porfa

      Un saludo!

      Responder
      • Hola David, estoy haciendo pruebas pero no pude lograrlo por ahora. Utilice el codigo completo del final del post:

        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_URI} !^/sitemap.xml
        RewriteCond %{REQUEST_URI} !^/page-sitemap.xml
        RewriteCond %{REQUEST_URI} !^/post-sitemap.xml
        RewriteCond %{REQUEST_URI} !^/sitemap_index.xml
        RewriteCond %{REQUEST_URI} !^/wp-admin
        RewriteCond %{REQUEST_URI} !^/wp-json/
        RewriteRule ^(.*[^/]$) $1/ [R,QSA,L]

        Funciona bien la redirección a barra final, se dice guardado cuando edito los contenidos, pero luego no se ven reflejados ni guardados. Sigo probando y por las dudas desactive el pluguin de cache.

        Es una web con subdirectorios, en la carpeta raiz funciona bien, pero en los subdirectorios no.

        Gracias por responder.

        Responder
        • David creo que lo solucione, si me confirmas que esta bien te agradecería mucho.

          El subdirectorio es /ar/

          El código quedo así:

          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteCond %{REQUEST_URI} !^/ar/sitemap.xml
          RewriteCond %{REQUEST_URI} !^/ar/page-sitemap.xml
          RewriteCond %{REQUEST_URI} !^/ar/post-sitemap.xml
          RewriteCond %{REQUEST_URI} !^/ar/sitemap_index.xml
          RewriteCond %{REQUEST_URI} !^/ar/wp-admin
          RewriteCond %{REQUEST_URI} !^/ar/wp-json/
          RewriteRule ^(.*[^/]$) $1/ [R,QSA,L]

          Probé y ahora puedo editar y guardar cambios y la redirección funciona ok.

          Responder

Deja un comentario

Tu mail será tratado por el responsable, David Cuesta, con finalidad de avisos automáticos de comentarios o contacto directo (no comercial) y con legitimización por tu parte.