M.: mod_rewrite mit & und ?

Mahlzeit,
folgendes Problem:
Ich schreibe per mod_rewrite dioe Aufrufe auf eine Webseite um:

RewriteRule ^(.*)/$ /$1                                   [R=301]
RewriteRule ^([^/^.]+)$        /index.php?p[]=$1         [L,NE,QSA]
RewriteRule ^(.+)/([^/]+)$      /$1?p[]=$2                [L,NE,QSA]

Damit wird rekursiv jedes Parameter, unabhängig der Anzahl umgeschrieben. Funktioniert auch.
Wenn jetzt aber ein Parameter ein & oder ein ? enthält, wird es als ein neuer Parameter behandelt.
Ich habe das so gelöst, dass ich per PHP urlencode(urlencode($string)); ausführe.
Das klappt auch, nur würd mich interessieren, obs schöner und/oder eleganter geht.

Schonmal jemand ne schöne Lösung dazu entwickelt?

  1. Hi,

    Wenn jetzt aber ein Parameter ein & oder ein ? enthält, wird es als ein neuer Parameter behandelt.
    Ich habe das so gelöst, dass ich per PHP urlencode(urlencode($string)); ausführe.
    Das klappt auch, nur würd mich interessieren, obs schöner und/oder eleganter geht.

    Wenn du einen Apachen auf aktuellem Stand (2.2) hast, dann gibt es dafür das B-Flag.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Wenn du einen Apachen auf aktuellem Stand (2.2) hast, dann gibt es dafür das B-Flag.

      Das hatte ich schon probiert. Dann schreibt er mir aber nicht mehr richtig um. Hab nicht nachgesehen, wo das Problem liegt, schätze mal wegen der Rekursion.

      Danke trotzdem für den Tip.

      1. Moin!

        Wenn du einen Apachen auf aktuellem Stand (2.2) hast, dann gibt es dafür das B-Flag.

        Das hatte ich schon probiert. Dann schreibt er mir aber nicht mehr richtig um. Hab nicht nachgesehen, wo das Problem liegt, schätze mal wegen der Rekursion.

        Die Frage ist, warum du die komplexe URL-Auswertung nicht komplett in PHP realisierst?

        Das Rewriting aller aktuellen existierenden MVC-Frameworks beispielsweise sorgt einfach nur dafür, dass alle Requests, die nicht auf existierende Bilder, CSS- oder Javascript-Dateien laufen, einfach auf "das eine PHP-Skript" umgeleitet werden. Und erst dort wird die URL (und zwar die echte, inkl. aller unveränderten Parameter) dann ausgewertet und entsprechend behandelt.

        Das hat unter anderem den Vorteil, dass man in einer etwas zugänglicheren Programmiersprache mit der URL arbeiten kann, und dass man ein einmal gefundenes Rewriting auch problemlos und performant in die httpd.conf schreiben und .htaccess abschalten könnte, wenn man einen eigenen Server verwaltet.

        - Sven Rautenberg

        1. Die Frage ist, warum du die komplexe URL-Auswertung nicht komplett in PHP realisierst?

          Ist noch ne Altlast im System. Und da viele andere Dinge anstehen,hab ich die Umstellung zurückgestellt.
          Und da ich u.a. Subdomains af andere Ordner bzw. Domains umleite, ist die Sache sehr komplex.

          Mein Ziel ist aber, dass die komplette Auswertung in PHP passiert und nur nötoige Dinge per mod_rewrite erfolgen.