Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Problem: Mod_Rewrite und der Bindestrich in der URL

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Problem: Mod_Rewrite und der Bindestrich in der URL

    Ich nutze eine .htaccess mit folgendem Inhalt:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([\w]+)/?([\w]+)? /index.php?kategorie=$1&produkt=$2
    Gibt der User also in seinem Browser beispielsweise www.beispielsdomain.de/wagenheber ein, klappt alles wunderbar. Problematisch wird es, wenn der Teil hinter dem Slash einen Bindestrich enthält, der User also z. B. www.beispielsdomain.de/lkw-pkw aufruft. Der Bindestrich führt zu "kategorie = lkw". Der Bindestrich wird also als Trenner interpretiert. Mit einem Unterstrich www.beispielsdomain.de/lkw_pkw klappt alles prima ("kategorie = lkw_pkw").

    Habt ihr einen Tipp für mich, wie ich meine .htaccess anpassen muss, damit Bindestriche nicht als Trenner interpretiert, sondern korrekt übergeben werden?


  • #2
    Das liegt an der Definition eines "word character" in regulären Ausdrücken...
    [\w]

    A word character is a character from a-z, A-Z, 0-9, including the _ (underscore) character.
    Platziere ein entsprechendes Pattern anstelle des \w
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      @Istegelitz:

      Danke schon mal. Hast du spontan eine Empfehlung für eine Webseite, die alle aktuell zulässigen regulären Ausdrücken auflistet. Krieg es nämlich nicht hin. So funktioniert es zwar:

      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.+)/?(.+)? /index.php?kategorie=$1&produkt=$2
      Allerdings lasse ich damit von vorneherein diverse Sonderzeichen zu, die zu Schindluder einladen

      Kommentar


      • #4
        Konnte es jetzt so lösen:

        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^([0-9a-zA-z_ÄäÖöÜü-]+)/?([0-9a-zA-z_ÄäÖöÜü-]+)? /index.php?kategorie=$1&produkt=$2
        Zugelassen sind nun:

        - Zahlen von 0 bis 9
        - Kleinbuchstaben von a bis z
        - Großbuchstaben von A bis Z
        - der Unterstrich
        - Umlaute klein und groß
        - der Bindestrich

        Kommentar


        • #5
          Was für Schindluder denn? Die Sonderzeichen kann ich doch genauso auch direkt an Deine Url als Parameter hängen. Da ändert sich mal goar nix.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar

          Lädt...
          X