Skip to content

Links rotos compartidos desde Twitter

Detectei hai algunhas semanas que cando alguén abría unha ligazón á web en Twitter e logo tentaba compartilo de novo en Twitter desde ese navegador interno, a ligazón rompía.

Isto era porque Twitter engade, antes de compartir, un parámetro indicando a plataforma na que se está a ver a entrada. Ese pequeno ?s=09 parece disparar a páxina de busca (s é o parámetro de procura) e como non teño actualmente busca neste blogue, salta 404. O curioso é que outros valores, como ?s=9 por exemplo, non dan problemas….

Inicialmente arranxárao retirando toda querystring ao facer a redirección de WordPress en Nginx; isto é, quitando esta parte en negriña:

    location / {
            try_files $uri $uri/ /index.php?$args;
    }

Aínda que parecía que non afectaba ao comportamento do resto do sitio, veño de decatarme de que isto rompía completamente o acceso ao webfinger que, entre outras cousas, soporta a interconexión co Fediverse o co Mastodon do blogue. Así que restituín eses $args e implementei este outro arranxo, visto en StackOverflow:

    location / {
            if ($args ~ (.*)(^|&)s(?:=[^&]*)?(\2|$)&?(.*)) {
                    set $args $1$3$4;
            }
            try_files $uri $uri/ /index.php?$args;
    }

Posto ao comezo do bloque para a location xeral (os ficheiros PHP fan match antes), limítase a quitar o parámetro s, e só o parámetro s, da querystring. Penso que isto me permitirá mesmo activar a busca no futuro —e se me engano, podo engadir máis ifs— así que polo de agora volven funcionar tanto eses ligazóns compartidas do comezo, como o webfinger, como todo o demais.