Hay ciertas dudas que pueden surgir cuando se trata de hacer redirecciones desde el servidor que pueden presentar un quebradero de cabeza.
Tenemos que tener en cuenta, que si nuestra URL tiene un símbolo de interrogación "?" se trata de un parámetro. Entonces ese tipo de redirección sería una redirección de query string y por sus características se hace diferente.
Redirección de caracteres especiales
Cuando vemos una URL con caracteres especiales como letras acentuadas o letras en otros alfabetos, al copiar la URL para redireccionarla, nos acaba mostrando un código así:
Por ejemplo, si nos metemos en la URL https://example.com/acentuación y copiamos la URL de nuevo, nos saldrá esta otra URL: https://example.com/acentuaci%C3%B3n
Esto se debe a la propia codificación de caracteres. Sin embargo, aunque pueda parecer contraintuitivo, la solución correcta por medio de un RedirectMatch, sería poner la URL con los caracteres tal cual, no la codificación UTF8. Y de hecho ocurriría exactamente lo mismo con caracteres en otros alfabetos, tal y como muestro en el vídeo.
Por lo tanto, la forma correcta de hacer la redirección sería esta: Y no esta:
Redireccionar todos los acentos desde el servidor
Ahora bien, también hay formas de automatizar el proceso. Por ejemplo, esta sería una forma de hacer que todas las á en las URL se cambien por a. </IfModule> RewriteEngine On RewriteRule ^([^á]*)á([^á]*á.*) $1a$2 [N] RewriteRule ^([^á]*)á([^á]*)$ /$1a$2 [L,R=301] </IfModule> No se puede hacer un Replace como con JavaScript desde el Servidor, y como puede ser que haya varias "á" en una misma URL, se hace un Replace "en plural" y luego otro para la última en ser reemplazada. En el Master de SEO, los alumnos tendrán un cheatsheet para una implementación con todos los acentos. En cualquier caso, tendríamos que tener todos los archivos con su nombre reemplazado. Aunque hay formas de hacer esto rápidamente, por ejemplo con la herramienta Bulk Rename Utility.
¿Por qué no funciona con los espacios en blanco?
El %20 que es el código que deja un espacio en el encoding de ASCII para URL encoding de ASCII para URL. Este espacio en blanco se puede producir principalmente por un contenido multimedia con un espacio en blanco.
En este ejemplo de una web del estado, podemos ver este PDF que se subió con un espacio en blanco y genera ese "%20": Para hacer una redirección de una URL con estas características, tendremos que utilizar Regex y sustituir los espacios por un "\s". Afortunadamente para hacerlo más sencillo, he automatizado ese proceso en la herramienta de redirecciones de .htaccess y la de nginx: