Stean: mod_rewrite und Fragezeichen

Hallo zusammen
ich habe bis jetzt folgende Rewrite Role für meinen Apache Server.
RewriteRule ^administration/([0-9]+).html$ /administration/seite.php?n=$1

Diese wandelt eine URL wie z.B. host.tld/administration/10.html nach host.tld/administration/seite.php?n=10 um.

Wie kann ich nun eine URL wie z.B. host.tld/administration/10.html?var=abc nach host.tld/administration/seite.php?n=10&var=abc umwandeln? (Natürlich sollte die URL ohne ?var=abc weiterhin funktionieren)

Vielen Dank

  1. Ich wurde gerade teilweise fündig.
    Mit [QSA] am Ende der Zeile werden alle weiteren Parameter mitübergeben. Wie kann ich jetzt die Parameter auf einzelne Einschränken z.B. nur ?var=XY oder ?var1=XY&var2=ABC?

  2. Hi alle!

    Ich kann dir nicht helfen, wollte aber auch eine Frage zu mod_rewrite stellen. Ich hoffe, du hast nichts dagegen, wenn ich es mir in deinem Thread bequem mache.

    Ich versuche folgende Rewrite-Regeln zum laufen zu bringen.

    RewriteEngine on  
    RewriteRule ^(foo)(\/(.*))? foo.php?var=$3 [L,NC]  
    RewriteRule (.*) bar.php?var=$1
    

    Also wenn die Adresse nach dem Schema http://example.org/foo/foo1/foo2/ aufgebaut ist, sollte auf foo.php weitergeleitet werden. Es wird aber trotzdem  auf bar.php geleitet.
    Wenn ich die zweite RewriteRule auskommentiere wird übrigens auf foo.php umgeleitet.
    Ich dachte, es reicht, wenn das L-Flag gesetzt ist.
    Was habe ich übersehen?

    Auch wenn ich in der zweiten RewriteRule angebe, dass foo nicht am Anfang stehen darf, wird trotzdem drauf umgeleitet:
    RewriteRule !^(foo)(.*) bar.php?var=$2
    Wieso?

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Hi Ingrid!

      Ich glaube, ich habe den Fehler entdeckt.
      Tatsächlich habe ich ein Detail unterschlagen.
      Die erste RewriteRule verweist auf einen Ordner, welcher nicht "foo" heißt.
      Kann es sein, dass die RewriteEngine nach dem ersten umschreiben noch einmal angeschmissen wird?
      Wenn ja, wie kann ich das verhindern?

      RewriteEngine on  
      RewriteRule ^(foo)(\/(.*))? dir/foo.php?var=$3 [L,NC]  
      RewriteRule (.*) bar.php?var=$1
      

      Ich habe noch eine weitere Frage.
      Bei folgender RewriteRule bekomme ich als im Querystring den Namen der Datei, nicht den eingebenen Adressteil:
      RewriteRule (.*) foobar.php?var=$1
      Wie kann ich das verhindern?

      MfG H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      1. Ich habe noch eine weitere Frage.
        Bei folgender RewriteRule bekomme ich als im Querystring den Namen der Datei, nicht den eingebenen Adressteil:
        RewriteRule (.*) foobar.php?var=$1
        Wie kann ich das verhindern?

        Musst du nicht das ganze jeweils Einleiten?
        RewriteRule ^(.*)$ foobar.php?var=$1

        (Habs aber nicht ausprobiert)

        1. Hi Stefan!

          Musst du nicht das ganze jeweils Einleiten?
          RewriteRule ^(.*)$ foobar.php?var=$1

          "^" und "$" bestimmen nur, ob der Ausdruck am Ende oder am Anfang zu finden sein muss.

          Ich habe mir noch mal deine Regel angeschaut und folgendermaßen verändert:
          RewriteRule ^administration/([0-9]+)\.html(\?var=(.*))? /administration/seite.php?n=$1&var=$3
          Ich hoffe, ich konnte helfen.

          MfG H☼psel

          --
          "It's amazing I won. I was running against peace, prosperity, and incumbency."
          George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
          Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)