Carlos: RewriteRule

Mit der folgenden Regel

RewriteEngine on
    RewriteRule ^(.*).html$ $1.pl

kann ich alle meine html-Dokumente auf entsprechende pl-Programme umleiten.

Kann ich, wenn ich alle auf ein einziges pl-Programm umleite, in diesem erkennen/abfragen, woher die Umleitung kam, ohne dass ich bei der RewriteRule ?p1 angeben muss?
Also:
    RewriteEngine on
    RewriteRule ^(.*).html$ generell.pl

aber nicht

RewriteEngine on
    RewriteRule ^(.*).html$ generell.pl?$1

  1. hi,

    Kann ich, wenn ich alle auf ein einziges pl-Programm umleite, in diesem erkennen/abfragen, woher die Umleitung kam, ohne dass ich bei der RewriteRule ?p1 angeben muss?
    Also:
        RewriteEngine on
        RewriteRule ^(.*).html$ generell.pl

    Sollte sich eigentlich in den Umgebungsvariablen irgendwo finden lassen - unter PHP würde bspw. REDIRECT_URL (im $_SERVER-Array) gesetzt werden.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Sollte sich eigentlich in den Umgebungsvariablen irgendwo finden lassen - unter PHP würde bspw. REDIRECT_URL (im $_SERVER-Array) gesetzt werden.

      Habe in der Perl-Doku nichts analoges gefunden.
      Vielleicht gibt es einen Perl-Freak, der mir noch weiterhelfen kann?

      1. Hi,

        Subject: Perl Umgebungsvariablen

        Umgebungsvariablen, nicht Perl-Umgebungsvariablen.

        Habe in der Perl-Doku nichts analoges gefunden.

        Du hast in perldoc perlvar $ENV nicht gefunden?

        Vielleicht gibt es einen Perl-Freak, der mir noch weiterhelfen kann?

        Dass der Begriff "Freak" beleidigend ist, ist Dir hoffentlich klar.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Dass der Begriff "Freak" beleidigend ist, ist Dir hoffentlich klar.

          Ich habe es positiv gemeint. So war es zumindest zu 'meiner' Zeit.
          Aber 'geil' bedeutet ja auch nicht mehr das, was es einmal war.

          Du hast in perldoc perlvar $ENV nicht gefunden?

          Habe ich natürlich. Ich habe auch mit dem SELFHTML-Beispiel alle Umgebungsvariablen (die in Perl bekannt sind - korrekt formuliert?) ausgegeben, aber da ist keine dabei, die die Original-URL enthält.

          1. Hi,

            Dass der Begriff "Freak" beleidigend ist, ist Dir hoffentlich klar.
            Ich habe es positiv gemeint. So war es zumindest zu 'meiner' Zeit.

            das glaube ich Dir zwar, aber "Freak" hatte in keiner mir bekannten Sphäre des Raum-Zeit-Kontinuums eine positive Bedeutung.

            Aber 'geil' bedeutet ja auch nicht mehr das, was es einmal war.

            Stimmt, heute ist der Begriff nur noch selten botanisch gemeint.

            Du hast in perldoc perlvar $ENV nicht gefunden?
            Habe ich natürlich. Ich habe auch mit dem SELFHTML-Beispiel alle Umgebungsvariablen (die in Perl bekannt sind - korrekt formuliert?)

            Kann man stehen lassen, auch wenn Perl - genau wie jede andere Technik - lediglich die vom System zur Verfügung gestellten Werte durchreicht und allenfalls um einzelne eigene Werte ergänzt.

            ausgegeben, aber da ist keine dabei, die die Original-URL enthält.

            Dann schau Dir einfach an, welche Werte _wirklich_ bekannt sind.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Dann schau Dir einfach an, welche Werte _wirklich_ bekannt sind.

              Wenn ich richtig geschaut habe nicht der Wert, den ich bräuchte, der aber in PHP offensichtlich vorhanden ist (REDIRECT_URL).
              Wenn es so ist,dass die Menge der verfügbaren Werte je nach Sprache unterschiedlich ist, lag ich mit 'Perl Umgebungsvariablen' doch nicht so falsch, wenn ich damit meinte 'die Perl zur Verfügung stehenden Umgebungsvariablen'.
              Ein Königreich für ein 'REDIRECT_URL' in Perl!

              1. Hi,

                Dann schau Dir einfach an, welche Werte _wirklich_ bekannt sind.
                Wenn ich richtig geschaut habe nicht der Wert, den ich bräuchte, der aber in PHP offensichtlich vorhanden ist (REDIRECT_URL).

                dann schau noch mal genauer nach. Bei mir ist der Wert vorhanden.

                Wenn es so ist,dass die Menge der verfügbaren Werte je nach Sprache unterschiedlich ist, lag ich mit 'Perl Umgebungsvariablen' doch nicht so falsch, wenn ich damit meinte 'die Perl zur Verfügung stehenden Umgebungsvariablen'.

                Nein. PHP "erfährt" von dem Wert auf die gleiche Weise wie Perl: Das System stellt ihn zur Verfügung. Und dem System ist es an der Stelle wurscht, ob am Ende eine Verarbeitung durch Perl, PHP oder sonstwas oder überhaupt stattfindet.

                Ein Königreich für ein 'REDIRECT_URL' in Perl!

                Behalte Dein Königreich. Der Wert ist da.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Behalte Dein Königreich. Der Wert ist da.

                  Die Variable ist da, aber leider nicht der Wert (den ich erwarte).

                  Inhalt der Redirect-Anweisung in .htaccess in url1.example:

                  RewriteEngine on
                  RewriteRule ^(.*).shtml$ http://url2.example/cgi-bin/env.pl

                  Aufruf im Browser:

                  http://url1.example/irgendwas.shtml

                  Ergebnis (Ausgabe der Environment-Variablen in env.pl):

                  REDIRECT_URL /cgi-bin/env.pl

                  REQUEST_URI /cgi-bin/env.pl

                  aber keine Info von der Ursprungs-URL "url1.example/irgendwas.shtml"

                  1. Hi,

                    Die Variable ist da, aber leider nicht der Wert (den ich erwarte).

                    das liegt an Deiner Erwartung.

                    RewriteRule ^(.*).shtml$ http://url2.example/cgi-bin/env.pl

                    Jupp. Der Server führt keinen Redirect durch, sondern liefert dem Client die Information, dass er eine neue URL anfordern soll. Eine _völlig_ neue, ohne Zusammenhang zu der vorherigen. Zudem garantiert ohne einen Zusammenhang, den der Server jemals erfahren könnte.

                    Ergebnis (Ausgabe der Environment-Variablen in env.pl):
                    REDIRECT_URL /cgi-bin/env.pl
                    REQUEST_URI /cgi-bin/env.pl

                    Exakt das selbe wird Dir auch ein PHP-Script liefern. Möchtest Du im Wert REDIRECT_URL einen anderen Wert stehen haben, *muss* der Server diesen kennen. Das ist nur möglich, wenn der _Server_ den Redirect durchgeführt hat, nicht der Client. Absolute URLs sind also strikt tabu.

                    Cheatah

                    --
                    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
                    1. RewriteRule ^(.*).shtml$ http://url2.example/cgi-bin/env.pl

                      Jupp. Der Server führt keinen Redirect durch, sondern liefert dem Client die Information, dass er eine neue URL anfordern soll.

                      Autsch, da habe ich wohl die RewriteRule falsch interpretiert.
                      Und wer Server bzw. Client ist und was Server bzw. Client macht, habe ich noch nicht so ganz gecheckt.
                      Fürs erste weiß ich aber, dass es nicht so geht, wie ich mir es gewünscht hätte.
                      Danke für die Hilfe.

                      1. Hi,

                        Autsch, da habe ich wohl die RewriteRule falsch interpretiert.

                        nur bedingt. Es passiert halt etwas grundlegend anderes, wenn eine absolute URL angegeben wird - weshalb dies z.B. bei ErrorDocument 401 auch komplett verboten ist (einer der wenigen Sätze der Apache-Dokumentation, die fett gedruckt sind).

                        Und wer Server bzw. Client ist und was Server bzw. Client macht, habe ich noch nicht so ganz gecheckt.

                        Das ist nicht schlimm, im Netz ist jeder irgendwie alles ;-) Faustregel: Wer etwas anfordert, ist der Client. Wer eine Anforderung bearbeitet und darauf antwortet, ist der Server.

                        Cheatah

                        --
                        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                        X-Will-Answer-Email: No
                        X-Please-Search-Archive-First: Absolutely Yes
      2. Hey,

        Habe in der Perl-Doku nichts analoges gefunden.

        nicht in Perl, aber in Apache. http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv

        --
        水-金-地-火-木-土-天-海-冥