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:
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.
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)»
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!
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?
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!
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.
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.