Ich poste mittels Twitpress meine Einträge auf Twitter, wobei ich die URL zum Eintrag mittels der ID des Posts, also im Fall dieses Posts 3385, angebe. Dies sieht dann so aus:

Neuer Blog-Eintrag: Umleitung bei ausschließlicher Angabe der post_id in der URL auf den vollen Wordpress-Permalink mittels Nginx https://wolf-u.li/3385/

Früher wurde dann per Wordpress auf die volle URL umgeleitet, jedoch funktioniert dies in der Version 2.9.2, die ich momentan fahre, nicht mehr so. Das führte dazu, dass unter https://wolf-u.li/3385/ und der langen Url des Beitrags der gleiche Inhalt angezeigt wurde, was zu Problemen mit den Suchmaschinen führen kann. Da ich keinen Bock hatte, mich bei mir auf Fehlersuche zu begeben, habe ich kurz gegoogled und festgestellt, dass dies für Version 3.1 von Wordpress wiedergeplant ist. Ein wenig Recherche brachte an den Tag, dass man auch manuell per .htaccess (bei Nutzung von Apache) auf index.php?p={POST_ID} umleiten kann.

Dieser Artikel ist Teil einer Reihe zum Webserver nginx. Schau dir auch die anderen Artikel an: Zum Leitartikel

Da ich den Webserver Nginx einsetze, habe ich also nun einfach eine Prüfung geschrieben, die nachsieht, ob nach wolf-u.li/ einfach nur eine Zahl folgt und in diesem Fall auf die index.php leitet, welche dann auf die korrekte lange URL leitet. Die komplette Location könnte also so aussehen:

1
2
3
4
5
6
7
location / {
 if (-f $request_filename) {
 break;
 }
 rewrite ^/([0-9]+)/$ /index.php?p=$1 last;
 rewrite ^(.+)$ /index.php last;
}

Zuerst wird geprüft, ob der angeforderte Dateiname vorhanden ist. Wenn dem der Fall ist, werden keine weiteren Prüfungen durchgeführt und diese Datei zurückgegeben. Wenn nicht, wird zunächst die oben beschriebene Prüfung durchgeführt. Wurde kein Match ermittelt, so wird einfach nur auf index.php umgeleitet.

Das behob bei mir das Problem des doppelten Contents ;)