Vinzenz Mai: Weiterleitung (zu kompliziert für den Betreff)

Beitrag lesen

Hallo Ute,

Danke Euch beiden für Eure Tipps.
Ich habe mir das mal durchgelesen.
Aber ich fürchte, dass mich das leider stark überfordert.

an Aufgaben kann man wachsen.

Damit komme ich nicht klar, weil ich von diesen Server-Dingen nicht viel verstehe.

Du willst URLs umschreiben, ganz genau dafür ist mod_rewrite gemacht, wie Dir LX gesagt hat.

So schwierig ist das ganze gar nicht - vorausgesetzt, Dir steht mod_rewrite zur Verfügung. Heute gehört das durchaus zur Standardausstattung eines Paketes. Danach sind es im Ganzen aller Voraussicht nach drei oder vier Zeilen in Deiner .htaccess-Datei, wovon die ersten einfach

Options FollowSymLinks             # falls nötig
   RewriteEngine on

lauten, siehe Kasten "Note: Enabling rewrites in per-directory context" in der http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule.

Wenn wir uns Deine Aufgabenstellung nochmals anschauen:

Die aufgerufene URL lautet:
http://example.org/index.htm?/Artikel/kbl003.shtml

Umgeleitet soll werden auf:
http://example.org/produkte/kbl003.php

dann haben wir:

http://example.org/index.htm

als aufgerufene Ressource und

/Artikel/kbl003.shtml

als Querystring. Das Fragezeichen trennt Ressource von Querystring, gehört also nicht zu diesem selbst. Chris hat Dich und LX darauf hingewiesen, dass man eine Rewrite-Condition benötigt, um auf den Inhalt des Query-Strings zu reagieren:

RewriteCond %{QUERY_STRING} **RegExp, der den Aufbau matcht und den gewünschten Teil einfängt**

d.h. Du möchtest
    den Beginn des Querystring,
    gefolgt von der Zeichenfolge /Artikel/
    gefolgt von dem gewünschten Teil, der aus verschiedenen Zeichen (darunter
    kein Slash) besteht, den Du einfangen musst.
    gefolgt von der Zeichenfolge .shtml,
    gefolgt dem Ende des Querystrings haben.

Ich weiß nicht wie gut Deine RegExp-Kenntnisse sind und ob Du das hinbekommst. Wenn nicht, frage einfach nach.

Danach kommen wir zur RewriteRule, diese ist sehr einfach:

RewriteRule ^index.htm$ /produkte/%1.php?

wobei Du mit %1 auf das zugreifst, was der RegExp in der Rewrite-Condition eingefangen hat (der Teil zwischen /Artikel/ und .shtml). Das Fragezeichen zum Schluss sorgt dafür, dass der Originalquerystring nicht erneut angehängt wird. ^ und $ haben in regulären Ausdrücken eine besondere Bedeutung, siehe Reguläre Ausdrücke (Wikipedia).

Freundliche Grüße

Vinzenz