WordPress 2.3 Probleme mit Canonical URL Redirect und Datenschutz

WordPress “erfreut” die Bloggergemeinde mit der Version 2.3 mit einem neuen Versions-Monitor welches mehr Infos nach Hause sendet als erforderlich. Mehr über diese Schnüffelnummer und wie man sich dagegen wehren kann, weis der Nachtwächter. Weitere Probleme habe ich mit den neuen Canonical URL Redirects die hinter einem Loadbalancer zu endlos-Redirects führten. Mit dem offiziellem Plugin zum Deaktivieren der Canonical URL Redirects verstelle ich aber auch gleich das Encoding, so daß die Umlaute nicht mehr korrekt dargestellt werden, und dieses Plugin für mich unbrauchbar ist. Auf die Schnelle habe ich den Quellcode in /wp-includes/canonical.php so gepatched dass die function redirect_canonical sofort wieder verlässt und so das neue Feature nicht anwendet. Damit bleibt dann auch das Encoding erhalten. Was genau das Problem ist, wenn WP hinter dem Loadblancer läuft habe ich auf die Schnelle noch nicht herausgefunden.

Nachtrag: Problem mit WP2.3 hinter Loadbalancer Pound erkannt. Der Loadbalancer stattet die RequestedURL immer mit der Portangabe :80 aus. Diese Portangabe will WP herausbekommen und sendet einen Redirect. Der Loadbalancer hängt beim neuen Request dann wieder die :80 dran so dass wir in einer endlos-Redirect-Schleife gefangen bleiben. Ich filtere die :80 des Loadbalancers heraus. Damit klappt dann alles bestens. Die volle Funktionalität des neun Canonical URL Redirect bleibt erhalten.

3 comments Write a comment

  1. Pingback: Bernd Brägelmann, Köln

  2. Bernd, die Situation mit den endlos Redirects kann auch eintreten, wenn man im Apache-Config (oder .htaccess) eine andere Domain erwingt (siehe http://markjaquith.wordpress.com/2007/09/25/wordpress-23-canonical-urls/) . Das dürfte die wahrscheinlichere Ursache für das Problem sein. Bei mir war es jedoch der Sonderfall, dass mein WP hinter Pound läuft. Um dort das Problem zu fixen habe ich in

    function redirect_canonical($requested_url=NULL, $do_redirect=true)

    vor der Zeile

    $original = @parse_url($requested_url);

    einfach die vom Pound eingefügt Portangabe wieder herausgenommen:

    $requested_url = str_replace(‘:80’,”,$requested_url);

    womit es dann problemlos funktioniert. (Vorsorglich der Hinweis, dass ich diesen Blog hier noch nicht auf wp 2.3 umgestellt habe; da hängen zu viele Plugins mit drin von denen ich noch nicht weiss, ob sie Probleme bereiten).