Perl gibi görünen bir dil kodu
19 Ağustos 2026'da .htaccess dosyasına, bir tarayıcıya asla doğrudan sunulmaması gereken bir dosya türünü engelleyen bir kural ekledik: bir düzenlemeden sonra web kök dizininde kalan kaynak kodu kopyaları — index.php.bak, ortada kalmış bir config.py, bir ziyaretçinin çalıştırmak yerine kaynağını düz metin olarak indirebileceği, betik uzantılı her şey.
Kural dosya uzantısına göre eşleşiyordu: .php, .py, .rb, .pl, bunların yanında bir düzine uzantı daha. .pl Perl uzantısıdır. Bu projede tek bir satır Perl yok — kural önlem amaçlıydı, var olan bir dosya için yapılmış bir düzeltme değildi.
Yaklaşık bir gün sonra bir ziyaretçi, sayaç önizlemelerinin bozuk olduğunu bildirdi. Hepsi bozuktu, ama yalnızca tek bir dilde.
Öteki “pl”
stats4u.net, dili sabit bir varsayılana göre değil, her ziyaretçi için Accept-Language anlaşmasıyla seçer — Lehçeye ayarlı bir tarayıcıya, hiçbir yönlendirme olmadan doğrudan /pl/ sunulur; hiçbir şey eşleşmediğinde ise site İngilizceye döner. Lehçe sık görülen bir eşleşmedir: oraya o kadar çok ziyaretçi gelir ki bir gün süren bozuk küçük resimler uzun süre fark edilmeden kalamazdı.
Her tasarım önizlemesi, stil ve dil başına küçük bir dosyadır: cache/preview/2900.pl.svg. Kuraldaki desen, something.pl — bir Perl betiği — gibi dosyaları yakalamak için yazılmıştı, ama şuna da uyuyordu: 2900.pl ve ardından .svg, yani bir stil numarası, yazılışı tesadüfen bir betik uzantısıyla aynı olan bir dil kodu, sonra da gerçek dosya türü. Nokta-pl-nokta biçimindeki bir desen bu ikisini birbirinden ayıramaz.
Galerideki her .pl.svg ve .pl.png önizlemesi 403 Forbidden yanıtı vermeye başladı. Diğer bütün diller etkilenmedi, çünkü bu sitenin kullandığı başka hiçbir dil kodu uzantı listesindeki bir girdiyle çakışmıyor. Yalnızca bu bir tanesi.
Ne değişti
pl uzantı listesinden çıkarıldı. Liste, bu projenin endişelenmesi için gerçekten nedeni olan bütün betik uzantılarını hâlâ engelliyor; ama artık bir dili engellemiyor.
Bu olayı not etmeye değer kılan, neden yaşandığıdır: dosya uzantısı listesi ile dil kodu listesi iki ayrı sözcük dağarcığından gelir ve iki harfli bir girdinin aynı anda ikisini birden ifade etmesini hiçbir şey engellemez. Adres yolunda dil öneki bulunan bir sitede iki listeden birine ekleme yapmadan önce, eklediğiniz girdiyi öteki listeyle karşılaştırın. Burada bu karşılaştırma yapılmamıştı ve sorunu ortaya çıkaran, bozuk küçük resimleri fark eden bir okuyucu oldu — bu yüzden listede artık şu uzantının neden bulunmadığını açıklayan bir yorum var: pl; böylece listeyi bir sonraki toparlayan kişi, kuralla karşılaşmadan önce gerekçeyle karşılaşacak.