Eigentlich wollte ich nur herausfinden, warum mein Server ab und zu ins Stocken gerät. Also habe ich zwei Tage lang jeden Aufruf mitgeschrieben, der bei mir PHP startet, und mir die Liste danach in Ruhe angesehen. Herausgekommen sind gut 70.000 Zeilen.
Dabei bin ich über etwas gestolpert, das mir deutlich weniger gefallen hat als ein paar lahme Datenbankabfragen: 204 verschiedene Rechner, die brav weiter meinen Feed abfragen – manche im Viertelstundentakt – und von mir trotzdem seit Jahren keine einzige Zeile mehr bekommen haben.
Was da schiefgelaufen ist
Linux und Ich war vor vielen Jahren einmal zweisprachig angelegt, deshalb gab es damals /de/ vor jeder Adresse. Die Struktur ist längst weg, euer Abo in FreshRSS, Tiny Tiny RSS oder Newsboat aber natürlich nicht. Die fragen treu weiter die alte Adresse ab.
Ein guter Teil dieser Abos dürfte noch aus dem Frühjahr 2013 stammen, als Google seinem Reader den Stecker zog und wir alle unsere Feeds händisch in neue Programme geschoben haben – mit der Adresse, die damals eben aktuell war.

Und WordPress geht mit unbekannten Adressen erstaunlich großzügig um. Statt schlicht zuzugeben, dass es die Route nicht mehr kennt, sucht es sich anhand des Namensfragments den ähnlichsten Beitrag heraus und leitet kurzerhand dorthin weiter. Gut gemeint, nur eben falsch.
Bei /de/feed/ war das ausgerechnet mein alter Artikel Feedly, Theme und kleines Fazit zu Tiny Tiny RSS als Ersatz für den Google Reader. Ein Feedreader fragt nach dem Feed und bekommt einen Artikel über Feedreader – die Pointe hätte ich mir nicht besser ausdenken können.
Nur kam das eben als HTML statt als RSS an. Für jedes Leseprogramm ist das schlicht Datenmüll: Es fragt nach einer Feed-Datei, bekommt eine Webseite und zeigt im besten Fall einen Fehler an. Im schlechtesten schweigt es einfach.
Die Atom-Variante /de/feed/atom/ war noch schöner: sauberes 200 OK, gültiges XML, 529 Byte – ein komplett leerer Kommentar-Feed. Technisch tadellos, inhaltlich nichts. Wer die abonniert hatte, sah über Jahre hinweg eine Quelle, die einfach nie etwas Neues brachte.
Was ich geändert habe
Zwei Weiterleitungsregeln in der .htaccess schieben /de/feed/ und /de/feed/atom/ jetzt dauerhaft auf /feed/ beziehungsweise /feed/atom/. Kein Raten mehr, keine Sackgasse – ein Sprung, und euer Reader hat den echten Feed. Wer abonniert hat, bekommt ab sofort wieder, was er bestellt hat.
### /de/feed, /de/feed/ -> /feed/
RewriteRule ^de/feed/?$ /feed/ [R=301,L]
### /de/feed/atom, /de/feed/atom/ (auch rss, rss2, rdf) -> /feed/atom/
RewriteRule ^de/feed/(atom|rss|rss2|rdf)/?$ /feed/$1/ [R=301,L]
Falls ihr das nachbaut, eine Warnung, die mich selbst Zeit gekostet hat: Die Zeilen müssen vor den Block # BEGIN WordPress. Dahinter laufen sie ins Leere, und zwar vollkommen lautlos. Keine Fehlermeldung, kein Hinweis im Log, einfach keine Wirkung.
WordPress schreibt die Anfrage dort auf index.php um, mod_rewrite startet den kompletten Regelsatz daraufhin neu – und bricht im zweiten Durchlauf sofort bei RewriteRule ^index\.php$ - [L] ab. Was hinter # END WordPress steht, sieht bei sprechenden Permalinks also nie jemand.
Nebenbei habe ich den Feeds noch etwas Gutes getan. Sie machten über die Hälfte aller Anfragen aus, die bei mir überhaupt PHP starten. WP Fastest Cache legte die fertigen Feeds zwar längst als Datei ab, lieferte sie dann aber trotzdem über den kompletten WordPress-Start aus.
Also Datenbank hochfahren, Plugins laden, Theme laden – um am Ende eine Datei einzulesen, die Apache genauso gut direkt hätte herausgeben können. Genau das tut Apache jetzt. Aus gut einer Sekunde sind rund 90 Millisekunden geworden. Das merkt ihr kaum, mein Server dafür umso mehr.
Und jetzt seid ihr dran
Hier ist meine Bitte: Wenn dieser Artikel bei euch im Reader auftaucht, schreibt mir bitte kurz einen Kommentar. Ein „angekommen“ plus der Name eures Readers reicht völlig, mehr brauche ich gar nicht. Wer mag, nennt auch die Adresse, unter der er abonniert hat.
In meinen Logs sehe ich nämlich nur, dass jemand den Feed abruft. Ob der Inhalt am anderen Ende auch wirklich lesbar ankommt, sehe ich nicht – dafür brauche ich euch. Zahlen in einer Logdatei sind eben noch kein gelesener Artikel.
Und noch ein praktischer Tipp: Tragt in eurem Reader am besten gleich https://linuxundich.de/feed/ direkt ein. Die meisten Programme übernehmen eine dauerhafte Weiterleitung zwar von selbst, aber verlassen würde ich mich darauf nicht. Einmal kurz die Adresse tauschen, dann ist die Sache endgültig erledigt.

Bleibt mir nur, mich zu entschuldigen. Ihr hattet den Feed abonniert, ich habe beim Umbau nicht aufgepasst, und gemerkt hat es keiner von uns. Wer weiß, wie viele von euch gar nicht mitbekommen haben, dass hier Ende 2021 überhaupt wieder Leben eingekehrt ist.
Passt ja fast zu den BlogWochen, bei denen es gerade darum geht, die alte Blogkultur wiederzubeleben. Die fängt nämlich nicht bei schönen Themes an, sondern damit, dass die Leitungen zwischen Blog und Leser überhaupt funktionieren. Bei mir taten sie das eine ganze Weile nicht.
Was mich zur ehrlichen Frage bringt: Wie viele Feed-Abos schleppt ihr eigentlich mit, die still gestorben sind, ohne dass ihr es je bemerkt habt? Vielleicht lohnt sich bei euch heute Abend auch mal ein Blick in die eigene Abo-Liste.




Schreibe einen Kommentar