Een taalcode die op Perl leek
Op 19 augustus 2026 hebben we een regel aan .htaccess toegevoegd die een klasse bestanden blokkeert die nooit rechtstreeks aan een browser uitgeleverd mag worden: achtergebleven kopieën van broncode in de webmap na een bewerking — index.php.bak, een verdwaalde config.py, alles met een scriptextensie waarbij een bezoeker de bron als platte tekst kan ophalen in plaats van hem te laten draaien.
De regel keek naar de bestandsextensie: .php, .py, .rb, .pl, en een dozijn andere. .pl is Perl. In dit project staat geen regel Perl — de regel was een voorzorg, geen reparatie voor een bestand dat bestond.
Ongeveer een dag later meldde een bezoeker dat de tellervoorbeelden kapot waren. Allemaal, maar alleen in één taal.
De andere "pl"
stats4u.net kiest per bezoeker een taal via Accept-Language-onderhandeling en niet via een vaste standaard — een browser die op Pools staat, krijgt /pl/ rechtstreeks uitgeleverd, zonder doorverwijzing, en Engels is waar de site op terugvalt wanneer niets past. Pools past vaak: er komen genoeg bezoekers uit dat een dag met kapotte miniaturen nooit lang onopgemerkt zou blijven.
Elk ontwerpvoorbeeld is één klein bestand per stijl en taal: cache/preview/2900.pl.svg. Het patroon dat something.pl moest vangen — een Perl-script — paste ook op 2900.pl gevolgd door .svg: een stijlnummer, een taalcode die toevallig hetzelfde geschreven wordt als een scriptextensie, en dan het echte bestandstype. Een punt-pl-punt-patroon kan die twee niet uit elkaar houden.
Elk .pl.svg- en .pl.png-voorbeeld in de galerie begon met 403 Forbidden te antwoorden. Elke andere taal bleef ongemoeid, want geen enkele andere taalcode die deze site gebruikt botst met een vermelding op de extensielijst. Alleen die ene.
Wat er veranderd is
pl is van de extensielijst gehaald. Hij blokkeert nog steeds elke echte scriptextensie waar dit project reden toe heeft zich zorgen over te maken; hij blokkeert geen taal meer.
Het waard om op te schrijven vanwege de reden dat het überhaupt gebeurde: een lijst met bestandsextensies en een lijst met taalcodes komen uit twee verschillende woordenschatten, en niets houdt een vermelding van twee letters tegen om allebei tegelijk te betekenen. Voordat je op een site met taalvoorvoegsels in het pad aan een van beide lijsten toevoegt, houd hem tegen de andere. Die controle was hier niet gedaan, en een lezer die kapotte miniaturen opmerkte, bracht het aan het licht — en daarom draagt de afwezigheid van pl op de lijst nu een opmerking die zegt waarom, zodat de volgende opruimbeurt de reden tegenkomt vóór de regel.