Sven Rautenberg: statische URLs dynamisch generieren

Beitrag lesen

Aloha!

... wenn du aus 0815.html ein redirect.pl?0815 machen willst,
wäre das so Pi mal Daumen:
Redirect /(.*).html /cgi-bin/redirect.cgi?$1

Das wäre die klassische Lösung. :)

Ich hab aber kein redirect.cgi?0815 sondern hinter dem Fragezeichen mehrere Variable redirect.cgi?a=114&b=641&c=0815 - das bringe ich nicht in den code vor .html

Warum nicht? Anders geht es nunmal nicht, wenn deine URL an das Skript dynamische Informationen weiterleiten muß.

Mit anderen Worten: Du kannst natürlich
/neuheiten/neu.html
immer auf
/redirect.cgi?a=114&b=641&c=0815
umleiten, wenn deine Parameter in der Umleitung für diese Seite so immer gelten sollen.

Und für jede weitere statisch wirkende URL definierst du eine weitere Umleitung.

Eventuell ist es aber besser, wenn du doch einfach nur die statische URL an dein Skript weitergibst, damit dieses dann entscheidet, welche Parameter es benötigt.

Wenn du anhand des Pfadnamens bestimmte Werte setzen kannst, geht natürlich auch eine Art Massenabfertigung für alle Dateien in /neuheiten:
Ersetze
/neuheiten/(.*).html
durch
/redirect.cgi?a=23&url=$1

Ersetze
/nachrichten/(.*).html
durch
/redirect.cgi?a=24&url=$1

noch n'Kommentar zu diesem oder vorigen? Ich weiss, dass es MÖGLICH ist und gar nicht so kompliziert, Wo ist eigentlich die Syntax zu diesen Redirects und ReWrites erklärt? Ich meine, für normal Sterbliche :-)

Es gibt bei apache.org den RewriteGuide. Da sind viele Beispiele, was man alles machen kann - sicherlich auch Dinge, die so ähnlich klingen, wie dein Problem. Vor allem hilft Rewriting in einem Beispiel dort, eine neue Serverstruktur auf die alten URLs abzubilden (von welchen aus redirected wird, damit das neue Schema bekannt wird).

http://httpd.apache.org/docs/misc/rewriteguide.html

Vor allem solltest du dir auch die Grafik im Abschnitt "Ruleset Processing" der Doku genau ansehen und verstehen, wann welche Ausdrücke auf was angewandt werden. Zuerst kommt nämlich der reguläre Ausdruck in der RewriteRule zum Zuge, erst danach die RewriteCond, und zum Schluß wird der URL-Ersatzausdruck der RewriteRule angewandt, um eine neue URL zu erhalten.

http://httpd.apache.org/docs/mod/mod_rewrite.html#InternalRuleset

Ich würde mir übrigens nicht allzuviele Gedanken über die Serverbelastung machen. Vermutlich verbraucht dein Skript ein vielfaches der Rechenzeit, um die Seiten dynamisch zu generieren.

- Sven Rautenberg