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 :D

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 😂🤷‍♂️

Si te gustó esta nota podés...
Invitame un café en cafecito.app


Otros posts que podrían llegar a gustarte...

Comentarios

  • Martin Aberastegue     15/05/2023 - 10:38:19

    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. :D
    https://www.fabio.com.ar/9053-urls-largas-en-el-blog-luego-de-decadas

    • Fabio Baccaglioni     15/05/2023 - 10:44:51

      si, el regex se fija primero en el número, lo que pongas de texto le importa un bledo, lo que importa es el ID

  • Danbat     15/05/2023 - 13:46:01

    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.

    • Fabio Baccaglioni     15/05/2023 - 14:12:56

      ja, no se de dónde sacaste esa conclusión, sí, es una buena práctica, pero yo no la ejercía porque fuck the police :D

    • Danbat     15/05/2023 - 14:44:22

      BTW, acabo de ver bien la foto de portada, que a primera vista parecía una foto normal, y resulta que las letras del teclado no están del todo nítidas como deberían y que en la taza hay dos cucharas.

      Muy buen resultado con la IA.

  • Josepzin     15/05/2023 - 14:21:15 Revisado: 15/05/2023 - 14:21:53

    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.

    • Josepzin     15/05/2023 - 14:22:33

      Por cierto, parece que poner un texto en cursiva en los comentarios no funciona, o sea, al editarlo aparece en cursiva pero en los comentarios no.

  • Josepzin     15/05/2023 - 14:24:07

    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...

  • furoya     15/05/2023 - 16:03:52

    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. :D

  • Gabriel     15/05/2023 - 23:37:11

    la regexp deberías cambiarla por ^(+)-(+)/?$ y sacar esa gronchada de quitar el guión por código Guiño

    • Fabio Baccaglioni     16/05/2023 - 00:26:44

      pero eso dejaría pasar cualquier cosa en la primera parte ¿no? yo quiero sólo los números (igualmente después valido que sea numérico, nunca dejar pasar nada directo, je), pero por prolijidad

  • Gabriel     15/05/2023 - 23:41:55

    me cago en el sistema de comentarios, a ver si sale así

    ^(+)-(+)/?$

    • Gabriel     15/05/2023 - 23:43:10

      bue, se entiende, sacale el guión afuera del grupo :D

  • Hugo MdQ     16/05/2023 - 00:13:14

    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 :D 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 :D :D )

    • Fabio Baccaglioni     16/05/2023 - 00:25:22

      podés abrir vim/nano en el servidor y editar y guardar ahí mismo desde terminal 😁

  • Gabriel     16/05/2023 - 23:06:59

    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/

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https

Negrita Cursiva Imagen Enlace


Comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador. Los comentarios son filtrados por ReCaptcha V3.