Sparx: .htaccess Fragezeichen und co.

Hallo,

ich versuche in der htaceess datei festzulegen das der zugriff auf eine Datei per RewriteRule als parameter für eine im basedir gelegene datei endet.

[CODE]
RewriteRule ^Personen/([^/]+).html /personen.php?wer=$1
[/CODE]

erreichen möchte ich zum beispiel sowas:

zugriff auf /Personen/Vater+&26+Sohn.html
interner zugriff auf: /personen.php?wer=Vater+&26+Sohn

In meinem $_SERVER['QUERY_STRING'] erscheint leider: Vater+&+Sohn
was zur Folge hat, dass meine abfrage von $_REQUEST['wer'] in "Vater " endet.
ich möchte allerdings, dass es endet in "Vater & Sohn".

Was Mache ich falsch?

MfG Sparx.

  1. Hi,

    erreichen möchte ich zum beispiel sowas:

    zugriff auf /Personen/Vater+&26+Sohn.html
    interner zugriff auf: /personen.php?wer=Vater+&26+Sohn

    In meinem $_SERVER['QUERY_STRING'] erscheint leider: Vater+&+Sohn
    was zur Folge hat, dass meine abfrage von $_REQUEST['wer'] in "Vater " endet.
    ich möchte allerdings, dass es endet in "Vater & Sohn".

    Dann setze mal das Flag B für „escape backreferences“.
    http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html#rewriterule

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Dann setze mal das Flag B für „escape backreferences“.
      http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html#rewriterule

      Hat leider nicht geholfen. Ich bin neu in htaccess, die flags kann ich richtig setzen, keine Sorge. Vieleicht kriege ich es über eine RewriteCond hin oder was kann ich noch versuchen?

      1. Ich habe eine Seite gefunden die mein Problem ziemlich exakt beschreibt und eine für mcht nicht ganz hinnehmbare Lösung bietet:
        http://fgiasson.com/blog/index.php/2006/07/19/hack_for_the_encoding_of_url_into_url_pr/

        Eine doppelte Nutzung von urlencode() ist keine Option und ich kann nicht in jedem Server die zweite Lösung(recompilen) beibringen...

        Ich werde mich mal um die Apacheversion erkundigen.

      2. Hi,

        Dann setze mal das Flag B für „escape backreferences“.
        http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html#rewriterule

        Hat leider nicht geholfen. Ich bin neu in htaccess, die flags kann ich richtig setzen, keine Sorge.

        Aber Probleme besser als mit „hat nicht geholfen“ zu beschreiben, musst du wohl noch üben.

        RewriteRule ^Personen/([^/]+).html test.php?wer=$1 [B]

        gibt mit bei Aufruf von /Personen/Vater+&26+Sohn.html folgendes bei print_r($_GET) aus:

        Array
        (
            [wer] => Vater+&26+Sohn
        )

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Schau dir mal folgenden Bug an: https://issues.apache.org/bugzilla/show_bug.cgi?id=34602

          Die Ubuntu LTS hat derzeit Apache 2.2.8+sicherheitsupdates im Packetmanager.. also keine Chance.. Weiß jemand ob ich die mod_rewrite einzeln updaten kann?
          Und Apache zu updaten und mich damit außerhalb der LTS zu bewegen ist zu riskant/zu viel Arbeit.

          Gruß Sparx