WordPress: Datum aus URL entfernen

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.

6 Antworten auf „WordPress: Datum aus URL entfernen“

  1. Hmm … ich finde das ja noch ganz praktsich. SEO Gründe gibt es dafür latürnich nicht. Also würde mich SEO-Gründe interessieren. Damit habe ich 2003 aufgehört. Warum ich es praktisch finde: Es zeigt schon an der URL an, dass es sich um einen Blog-Artikel aus der regulären Chronoligie handelt und nicht um eine statische Seite (von denen ich ja auch zunehmend mehr habe). Außderdem verweißt es indirekt so nett auf die Chronologischen Archive.

    Und überhaupt: Cool URIs don’t change!




    0
  2. Ich lese mich jetzt schon den halben Sonntag durch das Blog hier, tolle Sache! Allerdings macht mir die hier angesprochene Änderung das Leben schon ein bisschen schwerer, da ich mich gern durch diverse Links und Teaser-Bilder treiben lasse, aber dann schwer sehen kann, wo ich zeitlich gelandet bin. Das ist bei manchen Artikeln nicht ganz unerheblich zu wissen! Es steht natürlich unter jedem Beitrag drunter, aber das ist irgendwie blöd, beim Lesen sich zu fragen, von wann ist der Artikel, und dann immer erst runterscrollen zu müssen. Deswegen: Es wäre schick, wenn man den Zeitstempel des Artikels irgendwo oben sehen könnte, entweder in der URL oder im oberen Bereich des Artikels.

    Alternativ, wegen der Reduzierung aufs Wesentliche: Zeitangaben nur bei Artikel älter als Zeitpunkt X (ein Monat vielleicht?) im oberen Bereich einblenden.




    0
  3. Hallo Marc,

    prima Artikel. Leider erhalte ich nach der Änderung der .htaccess einen Internal Server error.

    Ich bin mir nicht sicher ob ich Deinen Eintrag an der richtigen Stelle in der .htaccess eingefügt habe. So sieht aktuell meine .htaccess Datei aus:

    # BEGIN s2Member GZIP exclusions

    RewriteEngine On
    RewriteMatch 301 /blog/([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /blog/$4
    RewriteBase /
    RewriteCond %{QUERY_STRING} (^|\?|&)s2member_file_download\=.+ [OR]
    RewriteCond %{QUERY_STRING} (^|\?|&)no-gzip\=1
    RewriteRule .* – [E=no-gzip:1]

    # END s2Member GZIP exclusions

    # BEGIN WordPress

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

    # END WordPress

    Viele Grüße
    Wolf




    0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website zeigt Benutzerbilder über gravatar.com an.