Ich habe das Datum aus meinen URLs entfernt. Ich hatte bis jetzt immer gedacht, dass es äußerst sinnvoll wäre, zumindest das Datum in der URL mitzuführen.

Nach ein paar Gesprächen mit meinem Kollegen Martin über URLs musste ich zu dem Schluss kommen, dass es tatsächlich keinen tieferen Sinn hat, wenn man durch solche Dinge die URL künstlich aufbläst. Also habe ich alle meine URLs bis auf den Zusatz „/blog/“ gekürzt.

Was ist mit Google News

Aber braucht man das nicht, um bei Google News aufgenommen zu werden?“ Nein, braucht man nicht mehr laut dem Google Support, wenn man eine News Sitemap einreicht. Auch aus SEO Gesichtspunkten gibt es eigentlich nur Gründe für eine Verkürzung der URL. Also gibt es keinen Grund mehr, nicht die URLs ganz im Sinne von Verschlichter Dich zu vereinfachen.

Neue URL Struktur definieren

Das Permalinkschema in WordPress befindet sich unter Settings -> Permalinks Das habe ich entsprechend auf /blog/%postname%/ gestellt, damit meiner Artikel die URL https://marc.tv/[Artikel-Titel] bekommen. Schon haben alle Artikel die neue URL Struktur. Das war der einfache Teil.

Alte URLs umleiten

Da die alten URLs natürlich überall verlinkt waren und ich nicht möchte, dass diese Links ins Leere führen, habe ich sie umgeleitet. Das geht am einfachsten direkt über die .htaccess Datei auf dem Server, damit man WordPress damit nicht belasten muss. Hier die RegEx für die URL Rewrite Regel. Diese leitet alles mit dem Muster /blog/[ZAHL]/[ZAHL]/[ZAHL]/titel-des-artikels per 301 „Moved Permanently“ auf /blog/titel-des-artikels um.

RewriteEngine On
RedirectMatch 301 /blog/([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /blog/$4

Verlinkte URLs innerhalb von WordPress umschreiben

Das größere Problem ist, dass überall im Inhalt der Artikel und Kommentare die alten URLs verlinkt sind. Das ist natürlich durch die Umleitung in der .htaccess abgefangen worden aber schön ist es natürlich nicht, wenn die eigene Seite auf eine Umleitung verlinkt. Man könnte direkt auf Datenbank per Suchen und Ersetzen und ein paar Regulären Ausdrücken rumpfuschen. Ich habe mich deswegen dazu entschieden, lieber ein WordPress Plugin namens Search Regex zu bemühen. Dort habe ich die für meine URL Struktur passende RegEx eingetragen:

Search Pattern
|marctv.de/blog/(d*)/(d*)/(d*)/|

Replace Pattern
marctv.de/blog/

Haken bei RegEx setzen nicht vergessen!

search-regex

Dies habe ich für die Tabellen Post Content und Comment Content gemacht um die URLs in Artikel und den Kommentaren zu ersetzen. „Search“ sucht nur nach dem „Search Pattern“ und listet alle Fälle auf. „Replace“ zeigt an, was wie ersetzt wird aber führt den Befehl noch nicht aus. „Replace und Save“ macht dann ernst und ersetzt alle URLs.

Bei Kommentaren funktioniert Search Regex nicht!

Ja, das ist leider richtig. Es gibt irgendwo einen Bug im Plugin den man aber recht einfach umgehen kann. In der Datei /search-regex/view/admin/search.php in Zeile 23 setzt man einfach das Limit auf eine absurd hohe Zahl:

<?php echo $this->select( array( '1000000' => __( 'No limit', 'search-regex' ), '10' => '10', '25' => '25', '50' => '50', 'works' => '100000' ), $limit ) ?>

Das ist natürlich mit der heißen Nadel von hinten durchs Knie und ziemlich billig aber es funktioniert. Solange bis der Plugin-Entwickler endlich diesen nervigen Fehler behebt.

„www“ Subdomain aus der URL entfernen

Wenn man schon mal dabei ist, kann man auch die sinnlose www-Subdomain entfernen. Es macht die URL kürzer und mittlerweile denke ich, dass jeder mitbekommen hat, dass es sich um einer Adresse im World Wide Web handelt – ohne, dass man es an den Anfang der URL schreibt. In WordPress entfernt man unter Settings -> General bei der Site-URL und Domain das „www“. Die Weiterleitung aller URLs passiert wieder in der .htaccess So wird http://www.marctv.de zu https://marc.tv

RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Fazit

Vielleicht hilft diese Anleitung dem ein oder anderen, der das selbe vor hat wie ich. Wenn man ein bisschen aufpasst, kann eigentlich wenig passieren. Innerhalb weniger Tage Google dann auch schon die Umleitung bemerkt und seinen Index entsprechend angepasst.

Beteilige dich an der Unterhaltung

11 Kommentare

  1. Schau an, Marc. So begegnen wir uns wieder. :)

    Ich stelle gerade meinen Blog auf „Nicht-mehr-mit-Datum“ um. Da hast Du mir echt geholfen!

  2. Hallo Marc,

    genau danach habe ich gesucht. Ich habe das aktuelle WordPress und benutze WordPress seit fast 13 Jahren.

    Leider funktioniert die URL Rewrite Regel:
    RedirectMatch 301 /blog/([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /blog/$4
    Bei mir nicht.

    Ich habe es im Icognito Modus von Chrome getestet, jedoch muss ich wohl trotzdem mindestens 30min warten, bis ich sicher sein kann das er die htaccess Regeln nutzt (ich nutze auch nginx und da kann man ja auch manche Sachen regeln).
    Wenn ich die alte URL-Struktur mit Datum nutze kommt:
    „This is somewhat embarrassing, isn’t it?“

    Wenn ich mit der Einstellung wie jetzt mit Datum,Titel in URL, das Datum rausnehme als Test, leitet er mich korrekt auf die Seite um.

    So sieht der Rewrite Teil meiner htaccess jetzt ohne Permalink Änderung aus:

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /blog/index.php [L]

    1. Es gibt Seiten im Netz, die du nutzen kannst, um den Redirect zu testen.

      Der Chrome cached die Redirects. Aber ich meine nicht im Developer Mode mit Cache abgeschaltet.

      Was sagt denn die Redirect chain?

  3. Hi Marc,
    vielen Dank, für mich als Anfänger war es sehr hilfreich.

Schreibe einen Kommentar