Das Putzlowitsch Test- und SEO-Blog

IIS WordPress Permalinks

Ja, es war mir schon klar, daß ich nicht der erste bin, der sich dieses Problems annimmt. Bei wordpress.org selbst ist es im Codex unter dem Titel „Using Permalinks Without mod_rewrite“ bereits angeschnitten und es gibt auch drei Lösungen dafür. Zwei gehen den Weg über ein spezielles ISAPI-Filter und eine Lösung verwendet auch den 404er Trick. Allerdings werden dort die Permalinks über ein .asp-Programm umgesetzt. Das funktioniert auch für die Oldstyle-Permalinks (WordPress 1.X), als noch alle Rewrite-Regeln in der .htaccess-Datei standen. Meine Lösung funktioniert nur bei den Newstyle-Permalinks (WordPress 2.X), bei denen nur noch die index.php angesprochen wird und die Auflösung der REQUEST_URI WP-intern erfolgt.

Generell kann ich die Lektüre der Permalink-Codex-Seite wärmstens empfehlen. Da bekommt man einen guten Überblick, was Permalinks sind, wie sie funktionieren und was man alles damit machen kann (und was nicht). Die Seite sollte auch mal auf Deutsch bei WordPress-Deutschland aufgenommen werden, viele Fragen im WPD-Forum drehen sich um Permalinks und wären sicher mit dieser Seite einfach beantwortet.

Ein Kommentar »

Exoten

Es scheint doch tatsächlich Leute zu geben, die ernsthaft WordPress auf einem IIS (was ist das?) laufen lassen :-)
Naja, es funktioniert wohl sogar. PHP mit MySQL bekommt man da auch ans laufen, also eigentlich kein großes Ding. Wenn da nicht die Sache mit den Permalinks wäre. Denn die erfordern nun mal ein funktionierendes mod_rewrite, was es aber meines Wissens nur für den Apache-Webserver gibt. Zumindest kann der IIS von Hause aus nichts mit den entsprechenden Einträgen in der .htaccess anfangen. Und WordPress ist auch so schlau, erkennt, daß es unter einem ISS läuft und bietet dann für die Permalinks gleich nur die Form mit dem vorangestellten /index.php an. Die sehen dann z.B. so aus:
/index.php/die-wordpress-import-schnittstelle-47/
Gut, es funktioniert auch aber ist doch eher nur ein Notbehelf, eine Krücke. Schöner sieht es natürlich so aus:
/die-wordpress-import-schnittstelle-47/

Das muß aber nicht bei der index.php-Variante bleiben, denn das Problem ist ein ähnliches wie bei den Strato-PowerWeb-Paketen, bei denen zwar ein Apache mit mod_rewrite läuft, dieses aber vom Kunden nicht genutzt werden kann. Wenn man es doch versucht, wird das knallhart mit einem 500er Fehler bestraft. Wie man es bei Strato doch hinbekommt, habe ich hier beschrieben.

Für den IIS ist der Ansatz ganz ähnlich. Es wird ein benutzerdefiniertes Fehlerdokument für den Fehler ‚404 Not Found‘ „mißbraucht“ und dieses ist einfach die ‚index.php‘ im WordPress-Wurzelverzeichnis. Was anderes macht die RewriteEngine praktisch auch nicht, bis auf einen kleinen, aber wichtigen Unterschied. Beim Fehlerdokument wird der Status auf 404 gesetzt, so das der normale Nutzer im Browser zwar keinen Unterschiede sehen würde, denn er bekommt die Seite ganz normal angezeigt. Ein Suchmaschinen-Robot würde die Seite aber wie einen „Not Found“-Fehler behandeln und nicht weiter beachten. Deshalb ist das in der Beschreibung genannte Plugin erforderlich, welches den Status wieder ordentlich zurechtbiegt.

Etwas anders liegt die Sache beim IIS. Wenn eine benutzerdefinierte Fehlerseite als URL aufgerufen wird, wird vom Webserver der Status auf ‚200 OK‘ gesetzte und der Fehlerseite als Parameter der Fehlerstatus und die aufgerufene Seite mitgegeben. Hier ist dann die Fehlerseite dafür zuständig, den Status entsprechend korrekt zu setzen. Eine sehr schöne Vereinfachung gegenüber den Verrenkungen, die bei der Stratolösung nötig sind.
Die einzig wirkliche Aufgabe besteht darin, aus dem übergebenen Parameter die eigenlich aufgerufene URL dem WordPress als REQUEST_URI unterzujubeln, da daraus dann mit den Permalinkregeln die anzuzeigende Seite ermittlet wird.

Lange Rede, kurzer Sinn, genau das macht mein neues Plugin „123 IIS Permalink„. Es ermöglich also auch unter IIS die schönen Permalinks ohne dem /index.php/… Vorspann :-)

Weitere Artikel mit Bezug zu diesem:
Keine Kommentare »

Logfile-Kunst

Nach der Pixelkunst habe ich heute in meinem Server-Logfile folgendes entdeckt:

"GET /themen/wordpress/ HTTP/1.1" 301 5
"GET /themen/wordpress// HTTP/1.1" 301 5
"GET /themen/wordpress/// HTTP/1.1" 301 5
"GET /themen/wordpress//// HTTP/1.1" 301 5
"GET /themen/wordpress///// HTTP/1.1" 301 5
"GET /themen/wordpress////// HTTP/1.1" 301 5
"GET /themen/wordpress/////// HTTP/1.1" 301 5
"GET /themen/wordpress//////// HTTP/1.1" 301 5
"GET /themen/wordpress///////// HTTP/1.1" 301 5
"GET /themen/wordpress////////// HTTP/1.1" 301 5
"GET /themen/wordpress/////////// HTTP/1.1" 301 5
"GET /themen/wordpress//////////// HTTP/1.1" 301 5
"GET /themen/wordpress///////////// HTTP/1.1" 301 5
"GET /themen/wordpress////////////// HTTP/1.1" 301 5
"GET /themen/wordpress/////////////// HTTP/1.1" 301 5
"GET /themen/wordpress//////////////// HTTP/1.1" 301 5
"GET /themen/wordpress///////////////// HTTP/1.1" 301 5
"GET /themen/wordpress////////////////// HTTP/1.1" 301 5
"GET /themen/wordpress/////////////////// HTTP/1.1" 301 5
"GET /themen/wordpress//////////////////// HTTP/1.1" 301 5
"GET /themen/wordpress///////////////////// HTTP/1.1" 301 5

Gut, hinten und vorn habe ich einiges weggelassen aber auch so sieht das doch sehr nett aus. Zumal es dann öfter im Logfile stand, manchmal auch etwas kleiner.

Und wie der erfahrene Webmaster am Statuscode 301 sofort erkennt, handelt es sich um eine Redirect-Endlosschleife, also um theoretisch unendlich viele permanente Weiterleitungen. Das es nicht tatsächlich endlos so weitergeht liegt nur daran, daß der ordentlich programmierte Browser/Robot/Bot nach einer gewissen Anzahl Redirects das Spielchen nicht mehr mitmacht und mit einer Fehlermeldung dem Spuk ein Ende setzt. Bei Firefox und Opera sind es z.B. 20 Weiterleitungen, der Google-Bot gibt bereits nach 5 Versuchen auf. Am hartnäckigsten ist der MS-Internetexplorer 6, er läßt sich stolze 100 mal Umleiten.

Wie kommts? Ich hatte im Zuge der Abschaltung der Verbindestrichung und HTML-Terminierung beschlossen, die alten URLs per Redirect auf die aktuelle weiterzuleiten, hatte aber einen kleinen Fehler in meinem regulären Ausdruck bei den Kategorien, es fehlte ein Bindestrich. So wurden auch die gültigen Themenseiten mit einem angehängten Schrägstrich weitergeleitet, weitergeleitet und weitergeleitet. Wenn ein Browser oder Bot keinen Weiterleitungszähler verwendet, würde wohl irgendwann der Webserver mit einem ‚414 Request-URI Too Long‘ das Handtuch werfen.

Und die Moral von der Geschicht: „Verendlosschleife Redirects niemals nicht!“ :-)

Keine Kommentare »

Die WordPress Import-Schnittstelle

Keine Plugins im eigentlichen WordPress-Sinne, aber doch soetwas ähnliches sind die Importmodule. Dateimäßig zu finden unter ‚/wp-admin/import‘ bzw. im Backend ansprechbar über ‚Verwalten->Import‘. Bei WordPress-Version 2.2 sind bereits ganze 9 Importer mit der Installation bereits dabei:

  • Blogger – Beiträge, Kommentare und Benutzer aus einem Blogger-Blog
  • Blogware – Beiträge Blogware-Blog
  • DotClear – Kategorien, Benutzer, Beiträge, Kommentare und Links aus einem DotClear-Blog
  • GreyMatter – Benutzer, Beiträge und Kommentare Greymatter-Blog
  • LiveJournal – Beiträge aus einer LiveJournal-XML-Datei
  • Movable Type / TypePad – Beiträge und Kommentare aus einem Movable-Type- oder Typepad-Blog
  • RSS – Beiträge aus einem RSS-Feed
  • Textpattern – Kategorien, Benutzer, Beiträge und Links aus einem Textpattern-Blog
  • WordPress – Beiträge, Kommentare, benutzerdefinierte Felder, Seiten und Kategorien aus einer WordPress-Export-Datei

Man sieht anhand der kurzen Beschreibung den unterschiedlichen Datenumfang, den die jeweiligen Importmodule bewältigen. Je nach Typ erfolgt der Import aus einer oder mehreren Dateien, aus einer Datenbank oder mit Authorisierung direkt online. Da ich bis auf den RSS-Import keines der anderen Module bisher getestet habe, kann ich zur Qualität nichts weiter sagen. Beim RSS-Imoprt darf man natürlich keine Wunderdinge erwarten, es ist halt der kleinste gemeinsame Nenner aber man kann prinzipiell erstmal alles reinziehen, was irgendwie einen RSS-Feed ausspuckt.

Da ich meine „Hommingberger Zeitung“ technisch etwas auffrischen wollte, stand ich vor dem Problem, die knapp 100 Artikel möglichst komplett und unbeschadet nach WordPress importiert zu bekommen. Zunächst hatte ich angefangen, alle Beiträge per Copy&Paste zu übertragen, was aber doch etwas aufwändig und auch fehleranfällig geworden wäre. Und da mein altes „Redaktionssystem“ frontseitig aus in PHP selbstprogrammierten Seiten und als Backend in phpMyAdmin bestand, kam erstmal nur ein RSS Export/Import in Frage. Nach dem ersten Versuch habe ich das aber auch schnell zu den Akten gelegt, da sich einige Besonderheiten meiner Zeitung (Untertitel, Quellen) nicht übernehmen ließen. Weiter lesen

Weitere Artikel mit Bezug zu diesem:
5 Kommentare »

Wie bekommt man eingehende Links

Ganz einfach, man hat selber noch andere Webseiten, idealerweise bei unteschiedlichen Webhostern, mit denen man sich selbst kreuz und quer verlinkt. Oder man macht bei Blogaktionen, wie Stöckchen, Karneval, Schreibwettbewerben oder Verschenkungen mit. So eine Verschänkung läuft derzeit bei den Pixeljunkies, ähhm ich meine Glühweinjunkies mit einem Pixelkunstwerk. Da werde ich mir mal schnell ein Pixel holen, bevor die alle weg sind :-) So ein Pixel kann man immer mal gebrauchen.

Weitere Artikel mit Bezug zu diesem:
4 Kommentare »