Anders Winkler: mod_rewrite

Hallo Forum,

kann mir jemand vielleicht weiterhelfen? Ich möchte, dass der Aufruf von folgender URL:

http://www.mydomain.de/splash/?a=1

zum Aufruf von

http://www.mydomain.de/page.php

führt, und zwar mit folgenden Parametern:

a=1 und id=splash

Also als Ganzes:

http://www.mydomain.de/page.php?a=1&id=splash

---------

Folgendes schlägt fehl:

RewriteRule ^splash/(.*)$ /page.php$2&id=splash

Offenbar muss man das &id=splash irgendwie escapen, ich weiß allerdings nicht wie!

Zweiter Versuch:

RewriteRule ^(splash)/(.*)$ /page.php$2  [env=id:$1]

Nun würde ich erwarten, dass ich in meinem PHP-Skript in $_SERVER['id'] den Wert "splash" finden würde. Seltsamerweise aber findet sich der Wert in $_SERVER['REDIRECT_id']. Wie kommt das?

Danke für jeden Tipp,
Anders

  1. Hi,

    Folgendes schlägt fehl:

    RewriteRule ^splash/(.*)$ /page.php$2&id=splash

    Hmm, ich würde das so machen:

    RewriteRule ^splash/(.*)$ /page.php$1&id=splash [L]

    Dann sollte es eigendlich gehen, ich sehe sonst keinen Fehler...

    Liebe Grüße

    Stephan

    1. Hallo Stephan,

      RewriteRule ^splash/(.*)$ /page.php$1&id=splash [L]

      Dann sollte es eigendlich gehen, ich sehe sonst keinen Fehler...

      bei Aufruf von

      http://www.mydomain.de/splash/?a=1

      ist das Ergebnis

      "The requested URL /page.php&id=splash was not found on this server."

      Man beachte, dass zwischen "page.php" und "&id=splash" nichts steht. Nehme ich allerdings das "&id=splash" aus der Rule weg, macht Apache den folgenden Aufruf:

      page.php?a=1

      Offenbar kommt mod_rewrite nicht damit klar, dass direkt hinter dem "$1" noch etwas folgt ("$1&id=splash")!?

      Danke und schöne Grüsse, Anders

  2. use Mosche;

    http://www.mydomain.de/splash/?a=1
    [zu]
      http://www.mydomain.de/page.php?a=1&id=splash

    RewriteRule ^splash/(.*)$ /page.php$2&id=splash

    Deine RewriteRule trifft nicht auf den aufgerufenen Pfad zu, denn dieser ist '/splash...' und nicht 'splash...'. Schreibe also entweder in die RewriteRule '^/splash/...' oder vorher einfach
    RewriteBase /

    use Tschoe qw(Matti);

    --
      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
    1. Hallo Matti,

      Deine RewriteRule trifft nicht auf den aufgerufenen Pfad zu, denn dieser ist '/splash...' und nicht 'splash...'. Schreibe also entweder in die RewriteRule '^/splash/...' oder vorher einfach
      RewriteBase /

      Danke, aber das klappt definitiv auch ohne den führenden Slash!
      Schönen Gruss,
      Anders

      1. use Mosche;

        Deine RewriteRule trifft nicht auf den aufgerufenen Pfad zu, denn dieser ist '/splash...' und nicht 'splash...'. Schreibe also entweder in die RewriteRule '^/splash/...' oder vorher einfach
        RewriteBase /

        Hast du es denn schon mal mit RewriteLog probiert? Was sagt die Log-Datei?

        use Tschoe qw(Matti);

        --
          Anyone who quotes me in their sig is an idiot. -- Rusty Russell.