Muy buen cambio! Desde el punto de vista SEO, sugeriría seguir la recomendación de Google y usar guion normal en lugar de guion bajo.
Doc: https://developers.google.com/search/docs/crawling-indexing/url-structure
Con el regex que tenes actualmente funciona igual.
https://www.fabio.com.ar/9053-urls-largas-en-el-blog-luego-de-decadas
URLs largas en el blog, luego de décadas
Luego de muchos, muchos años, la insistencia de Google a la que nunca claudiqué y paja mental, terminé de programar para el blog las urls largas
Sí, ya sé, me llevó como una década y tenía casi todo hecho de hace algunos años, pero no tuve ganas de terminarlo ¿Qué me convenció de hacerlo? Pues bien, fue una serie de tonterías que ahora les explico, lo cierto es que las notas ahora son con urls con texto que llevan el título en ellas.
Años de SEO y aun así no lo hice, Google fue categórico: quien no siguiera nuestras "condiciones" dejaría de ser relevante y me lo pasé por los huevos, debo admitirlo, con los numeritos estaba bien y las urls eran realmente cortas y prácticas, aunque, claro, no para el SEO.
Pero como Google ya me había bajado de cualquier posicionamiento mucho antes, en su momento, decidi que podían irse bien a la mierda.
El otro día, en cambio, noté algo que me resultó más relevante: Si las notas no tienen una url completa ninguno de los sistemas de chat por AI interpreta de qué va la página, es más, uno de ellos (el peor de todos) hasta identificó la url como de un comercio/producto sólo porque en la misma hay un número y no texto. Así de mal entrenadas están las AI.
No es que pretenda que me encuentren pero si alguien le pregunta a un ChatGTP de qué va una nota que escribí, le pasa la url, y ésta responde cualquier mierda, pues... no, no está bien.
Así que como experimento decidí revivir el código que tenía olvidado, le faltaban algunas cosas que detallo a continuación.
del htaccess al sitemap
Un detalle no menor era corregir mi htaccess, el archivo que Apache utiliza para decidir a dónde cuernos enviar algo. El anterior sólo contemplaba las urls con número que no es más que el id de cada nota.
Cuando alguien llega a https://www.fabio.com.ar/9050 Internamente se lo envía a https://www.fabio.com.ar/verpost.php?id_noticia=9050 pero mantiene el número y conserva eso como url final.
Ahora bien, la cosa debía cambiar a https://www.fabio.com.ar/9050-ruleta_rusa_719 y no tenía puta idea de cómo se hacía eso con expresiones regulares porque ¿Quién choto las entiende perfectamente?
En el htaccess tuve que agregar una regla, antes sólo tenía:
RewriteRule ^([0-9_]+.*)$ verpost.php?id_noticia=$1&vieja=1 [L]
ahora le puse antes:
RewriteRule ^([0-9]+\-)([A-Za-z0-9-_]+)/?$ verpost.php?id_noticia=$1 [L]
No anda perfecto porque me agrega el guión pero hace que la url quede mejor, así que al recibir el dato tengo que contemplar eso para separar el guión del ID, nada complejo, pero un detalle.
Esto me permite cualquier número, guión, el texto que se le ocurra. De ahí sólo toma el número ($1) y lo envía a la url "tradicional" que es la que realmente procesa el pedido.
Ahora bien ¿Qué pasa si alguien usa una url anterior? Pues bien, por un lado el htaccess acepta las viejas porque dejé como segunda instrucción la vieja regla, pero desde el PHP también tuve que agregar redirección.
Si uno no envía un header indicando que la url se movió de forma "permanente" Google podría ver como urls duplicadas, en este caso, triplicadas
Si estas tres:
https://www.fabio.com.ar/9050
https://www.fabio.com.ar/verpost.php?id_noticia=9050
https://www.fabio.com.ar/9050-ruleta_rusa_719
dan código HTTP 200, se estaría triplicando el contenido, así que hay que hacer siempre un redirect con código 301 a la que corresponde si la url escrita es la ahora "incorrecta", o, más bien, "antigua".
HTTP/1.1 301 Moved Permanently
Luego de hecho esto tuve que meter mano en el código de las notas, de la portada del blog, de los comentarios recientes, los posteos sugeridos, las notas que escribió cada autor, los comentarios que dejó cada usuario, el buscador, el RSS y el sitemap, todo eso, y es obvio que algo puede quedar olvidado 😁 , tengan en cuenta que hice todo esto en un sólo día testeando "en vivo" como hacen los programadores de antes 😋
Por lo pronto parece que todo funciona OK, no digo que sea perfecto, porque si cambio el título de una nota me cambia la url también y eso es una poronga, tengo que crear un campo en la edición de nota que sea el "slug", el texto que va a la url, para que sea editable y no por "default" como está ahora.
Pero eso será para la versión 2.0 que puede llevarme otros diez años hasta que me interese programarlo 😂🤷♂️
Otros posts que podrían llegar a gustarte...
Comentarios
-
Bien, una razón más para dejar de programar. Se suponía que tener URL limpias era una buena práctica. Ahora resulta que no. Qué ganas de joder que tienen.
-
hice todo esto en un sólo día testeando "en vivo" como hacen los programadores de antes 😋
Los verdaderos héroes trabajan directamente con FTP sobre el servidor y en vivo, espero que este haya sido el caso.
-
Toda una movida en su momento lo de la URLs con palabras claves... como rompieron las bolas con todas estas cosas en su época. Ahora Wordpress ya te hace todo solo o los "genios del SEO" le meten plugins bestias que sirven para agregar palabritas y cosas...
-
Josepzin dijo:
Por cierto, parece que poner un texto en cursiva en los comentarios no funciona, ...
Si ponés ´i´ en lugar de ´em´ sí anda. Yo lo reclamé hace años, pero parece que hay que esperar una década.
-
Como odio los códigos del .htaccess... el otro día terminé preguntandole a chatgpt qué mierrrrrda hacía uno que me habían modificado, tuve que repreguntar porque tampoco entendí la respuesta Ya estoy grande para todos estos cambios.
(Hay alguna otra forma que modificar en sublime text, subir por ftp y probar en vivo??? no la conozco, los viejos coders de pelo en pecho hacemos así, somos adictos a la adrenalina )
-
no no, sería la misma regexp que usas pero con el - fuera del grupo. pasa que salió cualquier cosa en los comentarios.
lo podes comprobar con https://htaccess.madewithlove.com/