Zum Inhalt springen

Suchmaschinenfreundliche URLs

Erstellt am 2. Oktober 2004 · 6 Antworten · letzte Antwort am 3. Oktober 2004

Tags: URLs & Routing, Server & Hosting, Frage

christianp ·

Hallo,

ich habe folgendes problem. ich möchte gerne die links, die typo3 ausgibt (index.php?id=18-), auf die endung .htm umstelllen, da die statischen seiten vorher auf diese endung lauteten und daher auch so in den suchmaschinen plaziert sind.

ich habe folgende .htaccess auf den server geladen:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^/]*.html$ index.php

das funktioniert zwar, aber leider werden die dateien mit der endung .html angezeigt. habe in der zeile rewriteRule das html auf htm geändert, aber wenn ich auf der seite einen link anklicke, gibt er als endung trotzdem .html an.

muss ich da noch irgendwas in typo3 angeben?

gruss
christian

christianp ·

hi,

nach dieser dokumentation habe ich es ja auch gemacht, klappt ja auch wunderbar.

aber mein problem ist, statt der endung startseite.html, möchte ich dass startseite.htm angezeigt wird, dass klappt irgendwie nicht richtig.

johanness ·

Und was ist an .htm besser? Ich mag das ganz und gar nicht #paralyzed# Wieder so ein Zeug, das von MS eingeführt wurde...

christianp ·

hi,
eigentlich ist da gar nichts besser 😃

es ist so, die seiten bestehen bereits als dateien mit der endung htm, sind auch so in den suchmaschinen aufgenommen.

nun sollen die seiten in typo3 übernommen werden, und wegen den suchmaschinen sollten die seiten natürlich wieder den gleichen namen haben.

gruss
christian

robert.​meyer ·

Hallo,

Funktioniert mit folgender Variante mit Änderungen direkt im Quelltext, ist aber auch nicht in einer Live-Umgebung getestet:

Version 3.7.0:
Datei typo3/sysext/cms/tslib/class.tslib_fe.php
Zeile 558 (ca.) ersetzen durch

 if (!$fI['path'] && $fI['file'] && ((substr($fI['file'],-5)=='.html') || (substr($fI['file'],-4)=='.htm')))     {

Ebenfalls muss in der htaccess noch durch die Datei .htm ergänzt werden, so dass auch .htm-Datei in die index.php aufgelöst werden.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^[^/]*.html$ index.php
RewriteRule ^[^/]*.htm$ index.php

Diese Variante ist aber nicht besonders schön. URLs werden dann weiterhin mit .html erzeugt - .htm-Dateien werden lediglich interpretiert.

Ggf. bessere Variante:
Eine Datei mittels htmToHtml.php ersetzt in einem String die Zeichenkette ".htm" durch ".html" und macht dann auf diese neue URL ein Redirect.

RewriteRule ^[^/]*.htm$ htmToHtml.php

Wie auch immer: Der Effekt ist in beiden Fällen gleich, letzte Variante nur wesendlich problemloser. Bestehende Links in Suchmaschinen werden weiterhin aufgelöst und zusätzlich langfristig durch die neue ersetzt.