Ankündigung

Einklappen
Keine Ankündigung bisher.

htaccess RewriteRule - Problem mit dem "-"

Einklappen

Neue Werbung 2019

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

  • htaccess RewriteRule - Problem mit dem "-"

    Hallo Gemeinde,

    ich weiß es gibt zig Fragen und Antworten zu diesem Thema und ich bin ja auch selbst der Meinung, dass ich recht sattelfest bin mit den RewriteRule's
    Dennoch hat sich heute bei mir ein kleines Problem ergeben, welches ich nicht nachvollziehen kann.

    Es soll bei der URL eine Trennung durch einen "-" (Bindestrich/Minuszeichen) erfolgen.
    Eine "funktionierende URL würde zB. so aussehen:
    /anzeige/show-17-6436210-honda-accord.html

    Die dazugehörige RewriteRule würde nun so aussehen:
    PHP-Code:
    RewriteRule ^anzeige\/show-(.+)-(.+)-(.+)-(.*)\.htmlinserat_incomming.php?neuesinco=1&who=$1&restid=$2&hersteller=$3&model=$[L,NC,NS
    Soweit so gut funktioniert das ganze auch und die Variablen werden richtig gefüttert.
    PHP-Code:
    Array
    (
        [
    neuesinco] => 2
        
    [who] => 17
        
    [restid] => 6436210
        
    [hersteller] => honda
        
    [model] => accord

    Jetzt habe ich aber folgende URL:
    /anzeige/show-18-6336182-mercedes-benz-ml+320.html (Man beachte bitte beim Hersteller den Bindestrich)
    Die RewriteRule ist ja logischerweise jetzt die selbe wie beim obrigen Beispiel.
    Das Ergebnis ist aber leider ein ganz anderes wie das Array zeigt:
    PHP-Code:
    Array
    (
        [
    neuesinco] => 2
        
    [who] => 18-6336182
        
    [restid] => mercedes
        
    [hersteller] => benz
        
    [model] => ml 320

    Hier hat er mir beim Hersteller getrennt und somit ist die ganze Abfrage für den Popsch.

    Und genau das verstehe ich nicht.
    Geht er denn die RewriteRule nicht von Links nach Rechts durch sondern von rechts nach links?? Denn so täte es aussehen.

    Hat da jemand eine gute Idee für mich??

    Vielen Dank
    lg.
    Werner


  • #2
    Versuch mal:

    Code:
     RewriteRule ^anzeige/show-(.+?)-(.+?)-(.+?)-(.*).html$ inserat_incomming.php?neuesinco=1&who=$1&restid=$2&hersteller=$3&model=$4 [L,NC,NS]
    Das ? unterdrückt ja eigentlich die Gefräßigkeit

    Kommentar


    • #3
      Nimm ein anderes Trennzeichen für Leerzeichen im Herstellernamen.

      [edit] Okay, bei Mercedes-Benz natürlich schlecht

      Alternativ kannst du auch anstelle des Bindestrichs ein anderes Zeichen (z.B. _) wählen. Die Unterdrückung der Gier verschiebt das Ergebnis doch eigentlich nur. Was passiert bei weiteren Bindestrichen im Hersteller- oder Modellnamen?
      http://hallophp.de

      Kommentar


      • #4
        Zitat von Young Jedi Beitrag anzeigen
        Versuch mal:
        Das ? unterdrückt ja eigentlich die Gefräßigkeit
        Ahhhhh.....
        Ein ? soll es sein - Danke Dir! Genau das war es!
        Jetzt funzt es auch bei solchen URL's

        lg.
        Werner

        Kommentar


        • #5
          Bis die nächste URL kommt, die Ähnlichkeiten mit
          Code:
          anzeige/show-18-6336182-hersteller-name-mit-bindestrich-modell-name-53.html
          hat.
          http://hallophp.de

          Kommentar


          • #6
            Wenn Bindestriche nur im Hersteller und nicht im Modell vorkommen, kannst du das letzte (.*) durch ([^\-]*) ersetzen (also Bindestriche dort explizit ausschließen)

            Wenn beides möglich ist (Asipaks Beispiel) bist du ohnehin auf verlorenem Posten, dann taugt der Bindestrich nicht als Trennzeichen.
            @fschmengler - @fschmengler - @schmengler
            PHP Blog - Magento Entwicklung - CSS Ribbon Generator

            Kommentar


            • #7
              Zitat von Asipak Beitrag anzeigen
              Bis die nächste URL kommt, die Ähnlichkeiten mit
              Code:
              anzeige/show-18-6336182-hersteller-name-mit-bindestrich-modell-name-53.html
              hat.
              Das ist so gut wie ausgeschlossen.
              Hersteller mit Bindestrich gibt es nur 2 die auch offiziell mit Bindestrich übermittelt werden.
              Mercedes-Benz
              Rolls-Royce

              Bei den Modellen gibt es einige mit einem Bindestrich.
              Auch wenn im Modell mehrere Bindestriche beinhaltet sind funktionierts ohne Desaster.

              Bei der Möglichkeit Hersteller und Modell mit Bindestriche zu versehen gab es zwar das Problem dass er den Hersteller gespittet hat, aber die ID (und die ist wichtig für den weiteren Verlauf) wurde richtig übergeben.
              Diese Möglichkeit scheidet aber sowieso aus, da es diese Kombination nicht gibt.

              Dennoch danke an euch alle!!
              lg.
              Werner

              [Edit]
              @Asipak
              Die URL-Strucktur zu ändern auf einen _ statt einem Bindestrich wäre eine Möglichkeit, die sich dann aber durch das ganze Portal ziehen müsste.
              Dann kommt noch das mit den Umleitungen (301er) dazu, damit zumindest in den Suchmaschinen die neue Linkstruktur Platz findet, wärend die Backlinks alle "alt" bleiben.
              Ich denke das funktioniert jetzt ganz wunderbar, da ich noch einige Möglichkeiten ausprobiert habe.

              Im Prinzip wird ja nur eine Statistik gemacht und dann anhand der ID auf die richtige URL mit einem 301er weitergeleitet - und diese URL ist dann wieder genauso als würde man sie durch die Suche auf der Platform aufrufen.

              Kommentar

              Lädt...
              X