sasha: mod_rewrite und Übergabe von unbekannten query strings

Hallo,

ich benutze mod_rewrite um eine Verzeichnis-Struktur auf der Site zu simulieren.
Zusätzlich möchte ich alle evtl. eingehenden Get-Variablen (query strings) an das Script übergeben.
Zuzeit sieht meine rewrite rule so aus:
RewriteCond %{QUERY_STRING} ^?(.+)$
RewriteRule ^(\w+)/(\w+).php$ index.php?dir=$1&script=$2&%1

$dir und $script werden wie erwartet übergeben, und sind im Get-Array zu finden, der Query-Sting hingegen wird allerdings an die URL gehängt und man kann nicht darauf zugreifen.
Beispiel:
www.domain.de/dir/script.php?var1=eins&var2=zwei
erscheint weiterhin so im Browser und im GET-Array befinden sich nur dir und script.
print_r ($_GET) ergibt nur dir und script

Wie schaffe ich es auch die unbekannte Anzahl an Get Variablen im Query String in das GET-Array zu integrieren, und dieses nicht mehr nur am Ende der URL anzuzeigen?

Danke

Sasha

  1. Hallo,

    Wie schaffe ich es auch die unbekannte Anzahl an Get Variablen im Query String in das GET-Array zu integrieren, und dieses nicht mehr nur am Ende der URL anzuzeigen?

    Ließ die URL aus und lass dir alles nach dem ? ausgeben bzw. zerschneide vorher den String in seine Bestandteile.

    Grüße

    1. Hallo,

      Wie schaffe ich es auch die unbekannte Anzahl an Get Variablen im Query String in das GET-Array zu integrieren, und dieses nicht mehr nur am Ende der URL anzuzeigen?

      Ließ die URL aus und lass dir alles nach dem ? ausgeben bzw. zerschneide vorher den String in seine Bestandteile.

      Grüße

      Ich habe die URL zerschnitten und übergebe auch den gesamten Query String per %1, siehe letzter Post. Allerdings landet der Query String am Ende der URL, und nicht in $_GET, wo ich ihn gerne hätte. Das klappt nur mit Variablen, die ich aus der URI zusammenbastel.

  2. hi,

    Wie schaffe ich es auch die unbekannte Anzahl an Get Variablen im Query String in das GET-Array zu integrieren, und dieses nicht mehr nur am Ende der URL anzuzeigen?

    Du suchst vermutlich das Flag [QSA]

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Du suchst vermutlich das Flag [QSA]

      »»
      Ja, danke, das wars!

      Thnx

      Sasha

  3. Moin!

    ich benutze mod_rewrite um eine Verzeichnis-Struktur auf der Site zu simulieren.

    Das ist schön.

    Zusätzlich möchte ich alle evtl. eingehenden Get-Variablen (query strings) an das Script übergeben.

    Das ist einfach.

    Zuzeit sieht meine rewrite rule so aus:
    RewriteCond %{QUERY_STRING} ^?(.+)$
    RewriteRule ^(\w+)/(\w+).php$ index.php?dir=$1&script=$2&%1

    Warum so kompliziert?

    mod_rewrite tastet den Query-String nicht an, wenn du es nicht explizit sagst.

    Aber die einfachste Lösung wäre vermutlich, dass du einfach alles, was auf "..html" endet (warum php nehmen, wenn es nicht notwendig ist?), auf "/index.php" umleitest - und die genauere Auswertung, welche URL denn tatsächlich abgerufen wurde, dann im Skript erledigst. Da bist du flexibler.

    Oder mal auf die Kurzform gebracht:
    RewriteRule ^..php$ index.php

    index.php erfährt die angeforderte URL in $_SERVER['REQUEST_URI']. Daraus dann "Pfad" und "Seite" zu ermitteln dürfte kein Problem für dich darstellen. Die tatsächlich übergebenen URL-Parameter stehen ganz normal in $_GET.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."