Heute ist mir im Blog aufgefallen, dass einige Unterseiten, wie Kategorie- und Autorenseiten, nicht gefunden werden konnten und der Aufruf mit einem 404er beantwortet wurde. Im Endeffekt war dies ein Konfigurationsproblem, was auf einen Bug in der eingesetzten Blog-Software Serendipity (S9Y) zurückzuführen ist.

Die in meinem Blog nicht gefundenen Seiten waren beispielsweise die nachfolgenden Seiten einer bestimmten Kategorie. Wie in meinem Fall die "nächste Seite" der Kategorie Web: http://50226.de/tags/web/P2.html.

Nach einer kurzen Recherche bin ich auf einen Beitrag im offiziellen S9Y- Forum gestoßen, der exakt mein Problem beschreibt. Das bereits erwähnte Konfigurationsproblem hängt mit der URL-Gestaltung der Blogeinträge zusammen. Obwohl es bei Serendipity möglich ist, die URLs der Blogeinträge ohne einen Präfix zu konfigurieren, wird es laut dem Entwickler Garvin Hicking nicht unterstützt. Präfix heißt in diesem Zusammenhang:

  • http://50226.de/netgear-wnce-2001-die-sony-uwa-br100-alternative.html (ohne Präfix)
  • http://50226.de/blog/netgear-wnce-2001-die-sony-uwa-br100-alternative.html (Präfix blog)

Mit anderen Worten, ein Bug in der Software, den die Entwickler nicht beheben wollen.

Workaround

Damit wollte ich mich persönlich nicht abgeben und habe mir den - zugegebenermaßen alles andere als attraktiven PHP-Code angeschaut. In Zeile 255 der index.php findet man folgende Bedingung eines else-if Blocks, der wie folgt angepasst werden muss.

--- index.php.old 2013-01-26 17:39:58.000000000 +0100
+++ index.php 2013-01-26 17:40:46.000000000 +0100
@@ -250,7 +250,8 @@
     }
     echo $data;
-} else if ((preg_match(PAT_PERMALINK, $uri, $matches) ||
+} else if (!(preg_match(PAT_PERMALINK_CATEGORIES, $uri) || preg_match(PAT_PERMALINK_AUTHORS, $uri)) &&
+            (preg_match(PAT_PERMALINK, $uri, $matches) ||
             preg_match(PAT_COMMENTSUB, $uri, $matches) ||
             isset($serendipity['GET']['id']) ||
             isset($_GET['p']))

Und schon funktionieren die Kategorieseiten wieder. Da ich bis dato keine Nebeneffekte festgestellt habe, werde ich in den nächsten Tagen wohl einen Pull-Request bei Github machen müssen. :-)

blogroll
tags