Suchmaschinenfreundliche URLs
Unter jedem Eintrag in diesem Blog gibt es einen Direktlink. Da die Software, mit der dieses Blog läuft, auf PHP basiert, waren diese Links bisher die ganz normalen dynamischen Links mit angehängtem Querystring, wie z.B. https://www.qxm.de/?eintrag=/webdesign/20031104-144353
Leider sind diese Art von Links nicht besonders suchmaschinenfreundlich, da einige Suchmaschinen dynamische Links gar nicht erst in ihren Index übernehmen. Deshalb habe ich heute die PHP Skripte so umgeschrieben, dass URLs jetzt in dieser Form erzeugt werden: https://www.qxm.de/e/webdesign/20031104-144353
und dadurch aussehen wie statische Links.
Und das geht so: Man schreibe ein PHP Skript:
<?php
$url_array = explode("/",$PATH_INFO);
$url = 'https://www.qxm.de/?eintrag=/' . $url_array [1] . '/' .$url_array [2] . '.text';
header ("Location: $url");
?>
(Achtung: die Zeile, die mit $url anfängt, geht bis '.text';)
Dieses Skript wandelt den suchmaschinenfreundlichen URL (der in dieser Form auf dem Server ja gar nicht existiert) wieder zurück in die alte Form mit dem angehängten Querystring ?eintrag=/…
Das ganze speichert man nun unter dem Dateinamen „e“ auf den Webserver. Damit der Apache Webserver diese Datei auch ausführt und nicht einen 404 Fehler liefert, weil er denkt es handele sich um ein Verzeichnis, muss die .htaccess Datei noch um folgende drei Zeilen erweitert werden:
<Files e> ForceType application/x-httpd-php </Files>
Damit wird dem Webserver gesagt, dass ein einzelnes „e“ in einem URL als PHP Skript ausgeführt werden soll.
Was passiert nun aber genau, wenn ein URL in der Form https://www.qxm.de/e/webdesign/20031104-144353
aufgerufen wird? Ganz einfach: der Apache Webserver findet diesen URL auf dem Server nicht, hangelt sich aber von hinten nach vorn durch diesen URL, bis er zu einem Teil kommt, der tatsächlich auf dem Server existiert – in diesem Fall ist das https://www.qxm.de/e/. Dann wird das PHP-Skript „e“ gestartet, welches über die Server Variable $PATH_INFO den angeforderten URL wieder so umwandelt, dass die Datei vom Webserver gefunden und dargestellt wird.
Und demnächst ändere ich dann auch noch die Kommentarlinks… ;-)
Ähnliche Beiträge:
Neues von Private Messen in Berlin GmbH 101 Dinge, die ich wirklich hasse - Nummer 4
Kommentare:
Bei den Kommentaren handelt es sich um fremde Inhalte, die sich „esse est percipi“ nicht zueigen macht. Verantwortlich für den Inhalt eines Kommentars ist der jeweilige Verfasser.
Auf die Gefahr hin, mich wiederholt auf rutschigen Grund zu begeben: Dadurch, dass du header("Location: ...") verwendest, erreichst du nicht wirklich das, was du willst. Die Suchmaschinen bekommen diese Weiterleitung mit und indizieren die Seite nach wie vor unter der Querystring-Adresse, die du ja eigentlich vermeiden wolltest.
Als reine .htaccess-Lösung, die dieses Problem vermeidet, wäre denkbar:
RewriteEngine on
RewriteBase /
RewriteRule ^[a-z]+$ /index.php?c=$0
RewriteRule ^[0-9]{6}$ /index.php?d=$0&t=archiv
RewriteRule ^[0-9]{8}$ /index.php?d=$0
RewriteRule ^[a-z]+/[0-9-]+$ /index.php?eintrag=$0&%{QUERY_STRING}
Dann wären http://qxm.de/webdesign, http://qxm.de/200311, http://qxm.de/webdesign/20031104-144353?com=1 etc. möglich. Nur als kleine Anregung … :-)
Das war genau die Lösung, die ich eigentlich favorisiert hatte, aber leider hat mein Provider mod_rewrite nicht installiert – und ohne dieses Modul gibt’s eben auch keine RewriteEngine.
Aber was du da mit header("Location:
") sagst, stimmt, wenn ich so richtig drüber nachdenke. Ich muss mir dann wohl doch was schlaueres einfallen lassen – irgendwas mit include() oder so, was dann dummerweise aber gleich auch wieder erheblich aufwändiger wird…
Also: offensichtlich wertet Google doch nicht den Header request, sondern den Link selbst aus. Sucht man nämlich z.B. nach dreamworks contra pixar, wird nicht nur – wie vor Änderung der Linksyntax – die Startseite indiziert, sondern auch, was ja mein Ziel war, www.qxm.de/e/film/20031108-132337.
Jetzt müsste ich nur noch den robots Meta-Tag so anpassen, dass die Startseite vom Index ausgeschlossen wird. Aber damit warte ich erst noch ein wenig, bis ich wirklich sicher sein kann, dass sich alle Suchmaschinenspider so wie die von Google verhalten.
Ich würde das noch um ein
header('HTTP/1.1 301 Moved Permanently');
ergänzen.
Kommentar schreiben:
FAQ (Häufig gestellte Fragen)
Kommentare:
- Michael Preidel zu CookieCrumble Testflight jetzt auch für macOS
- Götz zu CookieCrumble Testflight jetzt auch für macOS
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Henning zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
Schlagwörter
