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.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar

          Lädt...
          X