Blog



Website umstrukturieren und alte URLs retten

Öfter kommt es vor, dass man eine Website neu gestaltet und das auch mit einer Neuordnung der Inhalte einher geht. Dabei ändert sich nicht nur die Navigation, sondern daraus in Konsequenz die Adressen der Seiten - die URL. Besonders wenn man eine bestehende, bisher manuell erstellte, Seite erstmals mit einem CMS umsetzt, geschieht das oft mit einer Umstrukturierung der Inhalte. Seiten werden verschoben, zusammengefasst, entfernt und neu erstellt.

Doch was macht man mit all denen, die eine der alten Adressen als Lesezeichen im Browser gespeichert haben? Oder wenn auf einer anderen Website ein Link zu einer alten Seite steht? Sollen die Besucher dann eine unschöne Fehlerseite angezeigt bekommen?

Das muss nicht sein. Die eleganteste Lösung ist eine Weiterleitung zur neuen Adresse.

Beispiel:
Bisher gibt es eine Seite /sofindensieuns.html. Im neuen Auftritt wird die Seite /kontakt/anfahrt.html sein. Nun wird der Webserver angewiesen, beim Abruf von /sofindensieuns.html auf die neue Adresse weiterzuleiten. Als Weiterleitungscode wird 301 benutzt. Das bedeutet "Moved Permanently", also die Adresse wurde dauerhaft (permanent) geändert.

Eine solche Weiterleitung kann der Apache-Webserver mit installiertem mod_rewrite ausführen. Man muss nur eine Datei mit dem Namen .htaccess anlegen, in der spezielle Anweisungen stehen.

Für obiges Beispiel würde das so aussehen:
RewriteEngine on
RewriteRule ^(sofindensieuns\.html)$ /kontakt/anfahrt.html [R=301]

Wichtig ist bei der Ursprungs-Adresse der \. statt einem einfachen .. Es können nämlich die sogenannten regulären Ausdrücke benutzt werden und der Punkt hätte dann eine spezielle Bedeutung. Also muss er maskiert werden, was durch den vorgestellten \ geschieht. Ansonsten ist es doch einfach, oder?

Beispiel 2:
Alt:
  • /rezept/lebkuchen.html
  • /rezept/butterplaetzchen.html
Neu:
  • /weihnachten/backen.html

Bitte fragen Sie jetzt nicht nach den Sinn des Beispiels, aber es passt ja zur Adventszeit. 8-)
Es existieren also bisher zwei Seiten, die nun zu einer Neuen zusammengefasst werden sollen. Auch das ist ohne weiteres möglich. Man leitet einfach die beiden alten Adressen auf eine neue Zielseite um:

RewriteEngine on
RewriteRule ^(rezept/lebkuchen\.html)$ /weihnachten/backen.html [R=301]
RewriteRule ^(rezept/butterplaetzchen\.html)$ /weihnachten/backen.html [R=301]

Wie Sie sehen, muss das RewriteEngine on nur einmal angegeben werden.

Also "einfach" eine Liste aller alten Dateien machen, den passenden neuen Inhalt suchen und für jede alte Seite eine Weiterleitung zur entsprechenden neuen Seite einrichten. Das ist unter Umständen eine menge Arbeit. Aber Ihre Besucher werden es Ihnen danken. Suchmaschinen natürlich auch. 8-)

Hinweis: Der Artikel wurde inspiriert durch eine konkrete Anfrage eines Kunden, der seine bisherige Frontpage-Seite nun auf eforia umstellt. An dieser Stelle schöne Grüße und guten Flug. 8-)


Dieser Artikel wurde veröffentlicht am 12.12.2007 um 15:29 Uhr. Noch kein Kommentar.

Dynamische URL auf statische umlenken

Zur Zeit ist es ja ziemlich ruhig hier. Das liegt daran, dass ich ein paar Änderungen angefangen habe, aber noch nicht ganz damit fertig bin. Also mit dem meisten schon, aber eben nicht mit allem. Außerdem habe ich nun noch ein paar Tage Urlaub um einen Vortrag vorzubereiten. Ich schätze mal so richtig weiter geht es erst ab ca. 20.9.

Aber eine Kleinigkeit habe ich doch. Das mod Rewrite vom Apache wird immer gern genutzt, wenn man Serveranfragen intern an eine andere Adresse weiterleiten muss. Der Umgang mit den Anweisungen RewriteCond und ReWriteRule ist garnicht so einfach. Ich verzweifle immer wieder aufs neue, schaffe aber dann doch irgendwie, was ich will. Ich glaube auch, so geht es den meisten die es einsetzen. Das Internet ist voll mit Fragen und Antworten zum Thema. Gerade in der SEO-Szene gibt es auch viele Anleitungen denen man anmerkt, dass der Autor sich selbst zwar irgendwie helfen konnte, aber so richtig blickt er's auch nicht.

Wie auch immer. Die heutige Aufgabenstellung ist folgende: Eine ewm Seite wird bisher mit http://www.irgend_was.de/programm/o.prg?pos=3.2 aufgerufen. Der Webmaster entscheidet sich nun, doch eine statische Seite dafür anzulegen. Diese ist http://www.irgend_was.de/text/katalog/regen.html. Nun hat aber die alte dynamische Adresse schon eine Weile existiert (und tut es ja noch). Zahlreiche andere Seiten haben diese auch so verlinkt.

Nun ist es aber durchaus sinnvoll, sich möglichst auf eine einzige Seite zu konzentrieren. Daher will der Webmaster nun alle Aufrufe der alten Adresse auf die neue umleiten. Die Umleitung soll mit einem 301er statt finden. Das ist der Servercode, der für ständige Umleitung steht. Also wenn jemand die alte Adresse aufruft, bekommt er die neue Adresse mitgeteilt und die Information, dass in Zukunft nur noch die neue Adresse gelten soll. Es gibt auch noch den Code 302, der für einen temporären Umzug steht.

Der Webmaster macht also nun eine .htaccess-Datei und erstellt folgende Regel:
RewriteEngine on
RewriteRule ^programm/o.prg?pos=3.2$ /text/katalog/regen.html [L,R=301]

Und Pustekuchen. Das funktioniert nicht. Die Rewrite-Engine unterscheidet nämlich URI und Query sehr genau. Alles was nach dem Fragezeichen kommt, kann also in der ReWriteRule gar nicht mehr abgefragt werden. Die Lösung sieht dann so aus:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^pos=3.2$
RewriteRule ^(.*)$ /text/katalog/regen.html? [L,R=301]

Es wird also zuerst der Query-String geprüft und dann die eigentliche Regel erstellt. In diesem Fall wird nicht einmal mehr auf o.prg geprüft. Ich leite einfach alles um, was mit pos=3.2 aufgerufen wird. 8-)

Das Fragezeichen am Schluss der Regel verhindert, dass der Query-String wieder angehängt wird. Das macht sonst mod Rewrite. Wenn man eigene Parameter in der Umleitung hat und trotzdem die Ursprungs-Query benötigt, muss man die Option QSA mit in die eckige Klammer setzen. Aber das würde hier schon wieder zu weit führen.

So, mehr wollte ich heute garnicht sagen. Besteht den generell Interesse an Beispiele für mod Rewrite?
Das Ding ist echt mächtig. Man kann z. B. beim Aufruf einer Seite die nicht existiert diese erst durch ein Script generieren lassen und dann ausliefern. Spannend, oder?

In der Praxis setzt man mod Rewrite viel in der Suchmaschinenoptimierung ein um doppelte Inhalte zu vermeiden. Bei Interesse, kann ich noch eine Reihe Beispiele liefern.

Dieser Artikel wurde veröffentlicht am 03.09.2007 um 14:44 Uhr. 2 Kommentare.

.htaccess

Ich erhielt eine Mail eines Anwenders, der fragt, wie schlimm es den wäre, einen Provider zu benutzen, der keine .htaccess-Dateien unterstützt. Die Antwort möchte ich an dieser Stelle geben.

Der Apache-Webserver bietet die Möglichkeit Konfigurationseinstellungen über Dateien mit dem Namen .htaccess vorzunehmen. Wozu ist das gut?
Ein Beispiel: Der Webserver muss wissen, welche Datei ausgeliefert werden soll, wenn keine angegeben wird. Ruft ein Anwender http://www.wasauchimmer.de/ auf, liefert der Server meiste die Datei index.html aus. Welche Datei, ist eben eine Einstellung des Webservers. Die Apache Entwickler sind dabei auf die Idee gekommen, dass es ja durchaus sinnvoll ist, solch eine Einstellung direkt dort zu erlauben, wo sie getroffen werden soll. So entstanden die .htaccess-Dateien. Wie ich finde, eine klasse Idee. Habe ich ein Projekt, bei dem die Startseite eben nicht index.html sondern startseite.html ist, so lege ich eine .htaccess-Datei in genau dem Verzeichnis wo ich es benötige an und definiere dort eben genau das. Das Projekt kann nun von einem Server auf einen anderen umziehen ohne, dass diese Einstellung jedesmal in der Webserver-Konfiguration vorgenommen werden muss. Spitze!

Natürlich ist die Festlegung der Standardseite (DirectoryIndex) nur eine Möglichkeit. Man kann auch den Zugriff beschränken und viel viel mehr. Besonders mächtig ist dabei die Funktion URLs ändern zu können (rewrite).

Nun zurück zum ewm. Welche Rolle spielen .htaccess-Dateien?

Einmal werden direkt .htaccess-Dateien mitgeliefert um Verzeichnisse zu schützen. Dieser Schutz ist enorm wichtig. Ist er nicht vorhanden, kann jeder auf sämtliche Daten des Systems zugreifen. Natürlich kann man die Rechte auch entsprechend manuell setzen. Allerdings ist dies zusätzlicher Aufwand und bei einem Umzug des Systems kann es leicht vergessen werden.

Ansonsten benutzt ewm .htaccess nur noch um ohne Installation der tdbengine auf dem Server auszukommen. Dazu wird intern die URL so umgeschrieben, dass die tdbengine "dazwischengequetscht" wird. Das ist eine der drei Möglichkeiten tdbengine-Anwendungen auf dem Server auszuführen. Weil es ohne Installation auskommt und keine Anpassung der einzelnen Programme erfordert ist das sehr praktisch. Wenn man die tdbengine am Server installiert, braucht man das nicht.

Würde ich trotzdem auf .htaccess Wert legen?

Eindeutig: JA.

Ich habe kein (wichtiges) Projekt ohne .htaccess. Im einfachsten Fall um Aufrufe ohne www. auf die Adresse mit www. umzuleiten. Also wenn z. B. wenn jemand http://eforia.de eingibt, damit er bei http://www.eforia.de landet. Das ist z. B. wichtig, für das Suchmaschinen-Ranking. Ganz einfach gesagt können sonst Links auf beide Varianten eingehen und die Suchmaschine kann nur schwer entscheiden, welches die vom Webmaster gewünschte Variante ist.

Das geht mit:
RewriteEngine on
RewriteCond %{HTTP_HOST}   !^www\.eforia\.de [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^(.*)          http://www.eforia.de/$1 [R=301]

Auf tdbengine.org gibt es eine automatische Sprachauswahl. Wen die index.html abgerufen wird, der Browser aber als Sprache DE überträgt, und das noch vor einem eventuellen EN, wird auf index-de.html umgeleitet. Das sieht so aus:

RewriteEngine On
RewriteCond %{HTTP:Accept-Language} ^.*de.*$ [NC]
RewriteCond %{HTTP:Accept-Language} !^.*en.*de.*$ [NC]
ReWriteCond %{REQUEST_URI} !^.*index\.html$
RewriteRule ^(index\.html)?$ /index-de.html [L,R=301]

Das sind nur zwei kurze Beispiele, aber ich würde mir die Möglichkeit sowas einzusetzen nicht nehmen lassen. Auch wenn es mein Server ist und ich sowieso machen kann was ich will, finde ich es über .htaccess viel praktischer. Aus meiner Sicht gibt es auch keinen Grund darauf zu verzichten.

Dieser Artikel wurde veröffentlicht am 31.07.2007 um 20:10 Uhr. Noch kein Kommentar.
Zeige 1 - 3 von 3


Hier bloggt Horst Klier mit und über eforia web manager und was dazugehört (HTML, Javascript, Internet, Webdesign, Such- maschinenoptimierung, usw.).

>> Zur Blog Startseite

RSS-Feed
abonnieren


Übersicht über alle Beiträge



eforia® ist ein eingetragenes Markenzeichen.
Alle anderen Marken und Markenzeichen gehören Ihren jeweiligen Besitzern.
Letzte Aktualisierung dieser Seite: 14.10.2019 / 17:38:09
Suche  
Login / Userdaten
Impressum/Datenschutz