Коли «pl» означало дві різні речі
19 серпня 2026 року ми додали до .htaccess правило, що блокує клас файлів, які браузеру ніколи не можна віддавати напряму: залишкові копії вихідного коду, що лишаються в кореневій веб-директорії після редагування — index.php.bak, випадковий config.py, будь-що зі скриптовим розширенням, де відвідувач міг би отримати вихідний код як звичайний текст замість того, щоб його виконати.
Правило спрацьовувало за розширенням файлу: .php, .py, .rb, .pl та ще з десяток інших. .pl — це Perl. У цьому проєкті немає жодного рядка на Perl — правило було профілактичним, а не виправленням для файлу, що справді існував.
Приблизно через день відвідувач повідомив, що прев'ю лічильників зламані. Усі до одного, але лише однією мовою.
Інший «pl»
stats4u.net обирає мову для кожного відвідувача через узгодження Accept-Language, а не через фіксоване значення за замовчуванням — браузеру, налаштованому на польську, напряму віддається /pl/, без жодного перенаправлення, а англійська — це те, до чого сайт повертається, коли нічого не збігається. Польська — поширений збіг: на неї потрапляє достатньо відвідувачів, щоб день зламаних мініатюр не міг довго лишатися непоміченим.
Кожне прев'ю дизайну — це один невеликий файл на стиль і мову: cache/preview/2900.pl.svg. Шаблон, покликаний упіймати something.pl — Perl-скрипт —, також збігся з 2900.pl, за яким іде .svg: номер стилю, код мови, що випадково пишеться так само, як скриптове розширення, а тоді вже справжній тип файлу. Шаблон «крапка-pl-крапка» не може відрізнити одне від іншого.
Кожне прев'ю .pl.svg і .pl.png у галереї почало відповідати 403 Forbidden. Жодна інша мова не постраждала, бо жоден інший мовний код, який використовує цей сайт, не збігається з жодним пунктом у списку розширень. Лише цей один.
Що змінилося
pl прибрали зі списку розширень. Він і далі блокує кожне справжнє скриптове розширення, через яке цей проєкт має підстави хвилюватися; він більше не блокує мову.
Варто записати це заради причини, чому так узагалі сталося: список розширень файлів і список мовних кодів походять із двох різних словників, і ніщо не заважає дволітерному запису означати обидві речі одночасно. Перш ніж додавати щось до будь-якого з цих списків на сайті з мовними префіксами в адресі, звіряйте його з іншим списком. Ми цього не зробили, і саме читач, який помітив зламані мініатюри — а не наш власний моніторинг — виявив проблему.