.htaccess Search Query

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

  • .htaccess Search Query

    Guten Tag,

    ich bräuchte einmal Unterstützung für eine RewriteRule die mich zum verzweiflen bringt.

    Ich will das jeder Aufruf meiner URL in folgender Form:
    http://<url>.com/de/<somestring>-<somestring>
    von der search.php als search query angenommen wird, sodass in der URL halt nicht mehr http://<url>.com/search.php?search_query=1+2 steht.

    Habe schon gefühlte 20 Sachen probiert doch es klappt immer noch nicht. Das ist das was ich bis jetzt habe, allerdings funktioniert dies nicht.
    Code:
    RewriteRule ^de/([a-z]+)-([a-z]+) /search.php?isolang=de&search_query=$1+$2 [NC]
    Ich benutze derzeit Prestashop, welches von Haus aus schon 30 Zeilen an RewriteRules hat, falls diese für die Hilfe wichtig sind oder um das Problem zu erfassen werde ich sie auch noch anhängen.


    Über Hilfe wäre ich sehr dankbar.

    Liebe Grüße
    Zuletzt geändert von c0restalker; 09.11.2011, 15:04.

  • #2
    Hallo,

    liegt diese .htaccess im richtigen Verzeichnis? Wenn sie im Verzeichnis de liegt, musst du das „de“ im Pattern weglassen.

    Wenn du die Rule in die bestehende .htaccess eingebaut hast, schieb sie weiter nach oben und stelle sicher, dass keine andere Regel dazwischen funkt. Im Normalfall wird das Rewriting solange durchgeführt, bis keine Regel mehr passt oder die eingestellte maximale Anzahl an Rewriting-Zyklen erreicht ist.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Zitat von AmicaNoctis Beitrag anzeigen
      Hallo,

      liegt diese .htaccess im richtigen Verzeichnis? Wenn sie im Verzeichnis de liegt, musst du das „de“ im Pattern weglassen.

      Wenn du die Rule in die bestehende .htaccess eingebaut hast, schieb sie weiter nach oben und stelle sicher, dass keine andere Regel dazwischen funkt. Im Normalfall wird das Rewriting solange durchgeführt, bis keine Regel mehr passt oder die eingestellte maximale Anzahl an Rewriting-Zyklen erreicht ist.

      Gruß,

      Amica
      Vielen Dank für deine schnelle Antwort Dann werde ich sie jetzt mal weiter nach oben verschieben und es erneut probieren. Ich wusste nicht, dass es dort auch Reihenfolgen gibt.

      Liebe Grüße


      *EDIT*: Habe es jetzt ausprobiert, leider ohne erfolg. Er zeigt mir in der Browser-Leiste jetzt so etwas an:
      de/suche?search_query=seite nicht

      Also wahrscheinlich wurde damit als Query: Seite-Nicht-Gefunden eingefügt, weil das die standard 404 page für meine Seite ist.

      Vielleicht doch noch an der falschen Stelle?

      *EDIT 2*


      Jetzt klappt es, allerdings habe ich das Problem, dass in der URL nun search.php steht. Ich möchte aber nur den Query in der URL stehen haben.

      Beispiel: Habe als url: /hunde-futter eingeben.
      Und komme nun bei der URL:
      search.php?orderby=position&orderway=desc&search_query=hunde futter&submit_search=Suche
      raus. Gibt es da jetzt noch eine Möglichkeit, dass Hunde-Futter stehen bleibt?
      Zuletzt geändert von c0restalker; 09.11.2011, 15:47.

      Kommentar


      • #4
        Keiner eine Idee :/?

        Kommentar


        • #5
          Dein Edit 2 versteh ich nicht. Du baust doch keine Umleitung, oder? Rewriting ändert die im Browser angezeigte URL nicht. Daher verstehe ich nicht, wieso dir dort die umgeschriebene URL angezeigt wird. Es kann aber auch sein, ich hab dich einfach nicht verstanden.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Zitat von AmicaNoctis Beitrag anzeigen
            Dein Edit 2 versteh ich nicht. Du baust doch keine Umleitung, oder? Rewriting ändert die im Browser angezeigte URL nicht. Daher verstehe ich nicht, wieso dir dort die umgeschriebene URL angezeigt wird. Es kann aber auch sein, ich hab dich einfach nicht verstanden.

            Danke mal wieder für deine Antwort. Nein ich möchte keiner Weiterleitung haben. Ich möchte eine umgeschriebene URL haben, doch er zeigt ja nun wieder die php-Datei an als URL und nicht die umgeschriebene.
            Was muss ich denn für die URL-Änderung in der Browseranzeige nehmen wenn nicht die Rewrite-Rule oder reden wir aneinander vorbei?

            Liebe Grüße

            Kommentar


            • #7
              Wenn du die „schöne“ URL in die Adressleiste des Browsers eingibst, was passiert dann? Wenn dann die Adresse im Browser bestehen bleibt, aber trotzdem das richtige Script aufgerufen wird, dann ist mit deinem Rewriting alles in Ordnung. Der Browser bekommt davon nichts mit, das passiert alles serverseitig. Das bedeutet auch (und das ist vermutlich dein Problem), dass du selbst „schöne“ Links ausliefern musst.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Zitat von AmicaNoctis Beitrag anzeigen
                Wenn du die „schöne“ URL in die Adressleiste des Browsers eingibst, was passiert dann? Wenn dann die Adresse im Browser bestehen bleibt, aber trotzdem das richtige Script aufgerufen wird, dann ist mit deinem Rewriting alles in Ordnung. Der Browser bekommt davon nichts mit, das passiert alles serverseitig. Das bedeutet auch (und das ist vermutlich dein Problem), dass du selbst „schöne“ Links ausliefern musst.

                Die "schönen" URLs bleiben leider nicht bestehen sondern im Browser kommt wie gesagt wieder die unschöne URL zum vorscheinen..
                Wie muss ich denn die htaccess dementsprechend nun anpassen?

                Kommentar


                • #9
                  Steht an irgendeiner RewriteRule am Ende der Zeile ein [FONT="Courier New"][R][/FONT] oder [FONT="Courier New"][R=3[/FONT]xx[FONT="Courier New"]][/FONT]? Wenn ja, ist es kein internes Rewriting sondern eine Umleitung. Du willst aber umschreiben und nicht umleiten. Daher muss das weg.

                  Vielleicht ist es doch besser, wenn du mal die komplette .htaccess postest.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Zitat von AmicaNoctis Beitrag anzeigen
                    Steht an irgendeiner RewriteRule am Ende der Zeile ein [FONT=Courier New][R][/FONT] oder [FONT=Courier New][R=3[/FONT]xx[FONT=Courier New]][/FONT]? Wenn ja, ist es kein internes Rewriting sondern eine Umleitung. Du willst aber umschreiben und nicht umleiten.
                    Daher muss das weg.

                    Vielleicht ist es doch besser, wenn du mal die komplette .htaccess postest.
                    Finde leider kein [R] dadrin, nur [QSA, L] oder [L]. Deswegen zeige ich sie doch einmal. Sorry wenn sie ein wenig den Rahmen des Forums sprengt.

                    Code:
                    # .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
                    # WARNING: PLEASE DO NOT MODIFY THIS FILE MANUALLY. IF NECESSARY, ADD YOUR SPECIFIC CONFIGURATION WITH THE HTACCESS GENERATOR IN BACK OFFICE
                    # [URL="http://www.prestashop.com"]PrestaShop Free Open-Source e-Commerce Software for Web 2.0[/URL] - [URL="http://www.prestashop.com/forums"]PrestaShop Forums[/URL]
                    
                    
                    <IfModule mod_rewrite.c>
                    
                    # Disable Multiviews
                    Options -Multiviews
                    
                    # URL rewriting module activation
                    RewriteEngine on
                    
                    # URL rewriting rules
                    RewriteRule ^api/?(.*)$ /webservice/dispatcher.php?url=$1 [QSA,L]
                    RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2$3.jpg [L]
                    RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2.jpg [L]
                    RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$1$2.jpg [L]
                    RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$1$2$3.jpg [L]
                    RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg [L]
                    RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg [L]
                    RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg [L]
                    RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg [L]
                    RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg [L]
                    RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg [L]
                    RewriteRule ^c/([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg [L]
                    RewriteRule ^c/([a-zA-Z-]+)/[a-zA-Z0-9-]+\.jpg$ /img/c/$1.jpg [L]
                    RewriteRule ^([a-z]{2})/[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$2&isolang=$1 [QSA,L]
                    RewriteRule ^([a-z]{2})/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$2&isolang=$1 [QSA,L]
                    RewriteRule ^([a-z]{2})/([0-9]+)\-[a-zA-Z0-9-]*(/[a-zA-Z0-9-]*)+ /category.php?id_category=$2&isolang=$1&noredirect=1 [QSA,L]
                    RewriteRule ^([a-z]{2})/([0-9]+)\-[a-zA-Z0-9-]* /category.php?id_category=$2&isolang=$1 [QSA,L]
                    RewriteRule ^([a-z]{2})/content/([0-9]+)\-[a-zA-Z0-9-]* /cms.php?isolang=$1&id_cms=$2 [QSA,L]
                    RewriteRule ^([a-z]{2})/content/category/([0-9]+)\-[a-zA-Z0-9-]* /cms.php?isolang=$1&id_cms_category=$2 [QSA,L]
                    RewriteRule ^([a-z]{2})/([0-9]+)__[a-zA-Z0-9-]* /supplier.php?isolang=$1&id_supplier=$2 [QSA,L]
                    RewriteRule ^([a-z]{2})/([0-9]+)_[a-zA-Z0-9-]* /manufacturer.php?isolang=$1&id_manufacturer=$2 [QSA,L]
                    RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg [L]
                    RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L]
                    RewriteRule ^[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L]
                    RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*(/[a-zA-Z0-9-]*)+ /category.php?id_category=$1&noredirect=1 [QSA,L]
                    RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]* /category.php?id_category=$1 [QSA,L]
                    RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*) /supplier.php?id_supplier=$1 [QSA,L]
                    RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*) /manufacturer.php?id_manufacturer=$1 [QSA,L]
                    RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms=$1 [QSA,L]
                    RewriteRule ^content/category/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms_category=$1 [QSA,L]
                    RewriteRule ^en/page-not-found$ /404.php?isolang=en [QSA,L]
                    RewriteRule ^en/address$ /address.php?isolang=en [QSA,L]
                    RewriteRule ^en/addresses$ /addresses.php?isolang=en [QSA,L]
                    RewriteRule ^en/authentication$ /authentication.php?isolang=en [QSA,L]
                    RewriteRule ^en/best-sales$ /best-sales.php?isolang=en [QSA,L]
                    RewriteRule ^en/cart$ /cart.php?isolang=en [QSA,L]
                    RewriteRule ^en/contact-us$ /contact-form.php?isolang=en [QSA,L]
                    RewriteRule ^en/discount$ /discount.php?isolang=en [QSA,L]
                    RewriteRule ^en/guest-tracking$ /guest-tracking.php?isolang=en [QSA,L]
                    RewriteRule ^en/order-history$ /history.php?isolang=en [QSA,L]
                    RewriteRule ^en/identity$ /identity.php?isolang=en [QSA,L]
                    RewriteRule ^en/home$ /index.php?isolang=en [QSA,L]
                    RewriteRule ^en/manufacturers$ /manufacturer.php?isolang=en [QSA,L]
                    RewriteRule ^en/mein-konto$ /my-account.php?isolang=en [QSA,L]
                    RewriteRule ^en/new-products$ /new-products.php?isolang=en [QSA,L]
                    RewriteRule ^en/order$ /order.php?isolang=en [QSA,L]
                    RewriteRule ^en/order-follow$ /order-follow.php?isolang=en [QSA,L]
                    RewriteRule ^en/quick-order$ /order-opc.php?isolang=en [QSA,L]
                    RewriteRule ^en/order-slip$ /order-slip.php?isolang=en [QSA,L]
                    RewriteRule ^en/password-recovery$ /password.php?isolang=en [QSA,L]
                    RewriteRule ^en/prices-drop$ /prices-drop.php?isolang=en [QSA,L]
                    RewriteRule ^en/suche$ /search.php?isolang=en [QSA,L]
                    RewriteRule ^en/sitemap$ /sitemap.php?isolang=en [QSA,L]
                    RewriteRule ^en/stores$ /stores.php?isolang=en [QSA,L]
                    RewriteRule ^en/supplier$ /supplier.php?isolang=en [QSA,L]
                    RewriteRule ^en$ /en/ [QSA,L]
                    RewriteRule ^en/([^?&]*)$ /$1?isolang=en [QSA,L]
                    RewriteRule ^de/seite-nicht-gefunden$ /404.php?isolang=de [QSA,L]
                    RewriteRule ^de/adresse$ /address.php?isolang=de [QSA,L]
                    RewriteRule ^de/adressen$ /addresses.php?isolang=de [QSA,L]
                    RewriteRule ^de/authentifizierung$ /authentication.php?isolang=de [QSA,L]
                    RewriteRule ^de/verkaufshits$ /best-sales.php?isolang=de [QSA,L]
                    RewriteRule ^de/warenkorb$ /cart.php?isolang=de [QSA,L]
                    RewriteRule ^de/kontaktieren-sie-uns$ /contact-form.php?isolang=de [QSA,L]
                    RewriteRule ^de/discount$ /discount.php?isolang=de [QSA,L]
                    RewriteRule ^de/auftragsverfolgung-gast$ /guest-tracking.php?isolang=de [QSA,L]
                    RewriteRule ^de/bestellungsverlauf$ /history.php?isolang=de [QSA,L]
                    RewriteRule ^de/kennung$ /identity.php?isolang=de [QSA,L]
                    RewriteRule ^de/home$ /index.php?isolang=de [QSA,L]
                    RewriteRule ^de/hersteller$ /manufacturer.php?isolang=de [QSA,L]
                    RewriteRule ^de/mein-konto$ /my-account.php?isolang=de [QSA,L]
                    RewriteRule ^de/neue-Produkte$ /new-products.php?isolang=de [QSA,L]
                    RewriteRule ^de/bestellung$ /order.php?isolang=de [QSA,L]
                    RewriteRule ^de/bestellungsverfolgung$ /order-follow.php?isolang=de [QSA,L]
                    RewriteRule ^de/schnell-bestellung$ /order-opc.php?isolang=de [QSA,L]
                    RewriteRule ^de/bestellschein$ /order-slip.php?isolang=de [QSA,L]
                    RewriteRule ^de/kennwort-wiederherstellung$ /password.php?isolang=de [QSA,L]
                    RewriteRule ^de/angebote$ /prices-drop.php?isolang=de [QSA,L]
                    RewriteRule ^de/suche$ /search.php?isolang=de [QSA,L]
                    RewriteRule ^de/sitemap$ /sitemap.php?isolang=de [QSA,L]
                    RewriteRule ^de/shops$ /stores.php?isolang=de [QSA,L]
                    RewriteRule ^de/zulieferer$ /supplier.php?isolang=de [QSA,L]
                    RewriteRule ^de$ /de/ [QSA,L]
                    RewriteRule ^de/([^?&]*)$ /$1?isolang=de [QSA,L]
                    </IfModule>
                    
                    # Catch 404 errors
                    ErrorDocument 404 /404.php
                    
                    <IfModule mod_expires.c>
                        ExpiresActive On
                        ExpiresByType image/gif "access plus 1 month"
                        ExpiresByType image/jpeg "access plus 1 month"
                        ExpiresByType image/png "access plus 1 month"
                        ExpiresByType text/css "access plus 1 week"
                        ExpiresByType text/javascript "access plus 1 week"
                        ExpiresByType application/javascript "access plus 1 week"
                        ExpiresByType application/x-javascript "access plus 1 week"
                        ExpiresByType image/x-icon "access plus 1 year"
                    </IfModule>
                    
                    FileETag INode MTime Size
                    <IfModule mod_deflate.c>
                        AddOutputFilterByType DEFLATE text/html
                        AddOutputFilterByType DEFLATE text/css
                        AddOutputFilterByType DEFLATE text/javascript
                        AddOutputFilterByType DEFLATE application/javascript
                        AddOutputFilterByType DEFLATE application/x-javascript
                    </IfModule>
                    Zuletzt geändert von c0restalker; 11.11.2011, 21:15.

                    Kommentar


                    • #11
                      Soweit ich das sehe, passt /hunde-futter auf keines der Patterns. Also wird vermutlich die 404.php aufgerufen eine Umleitung auf die Suchseite veranlassen. Dort steht entweder etwas mit header("Location: …") drin oder ein <meta http-equiv="refresh" …>

                      Für weitere Fragen dazu halte ich es für sinnvoller, in diesem PrestaShop Forum nach Hilfe zu suchen.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #12
                        Zitat von AmicaNoctis Beitrag anzeigen
                        Soweit ich das sehe, passt /hunde-futter auf keines der Patterns. Also wird vermutlich die 404.php aufgerufen eine Umleitung auf die Suchseite veranlassen. Dort steht entweder etwas mit header("Location: …") drin oder ein <meta http-equiv="refresh" …>

                        Für weitere Fragen dazu halte ich es für sinnvoller, in diesem PrestaShop Forum nach Hilfe zu suchen.
                        Genau aus diesem Grund habe ich ja den oben stehenden Pattern geschrieben. Hatte ihn jetzt nur aus .htaccess rausgenommen, weil der auch zu Fehler führte mit der Seite "mein-Konto" z.B.
                        Würde den pattern dann so aussehen lassen wollen:
                        Code:
                        RewriteRule ^([a-z]+)-([a-z]+) /search.php?isolang=de&search_query=$1+$2 [NC]
                        Allerdings weiß ich damit nicht an welcher Stelle der stehen sollte.

                        Prestashop-Forum ist leider das letzte. Es gibt auch einige Fehler in der E-Commerce-Software, doch anstatt Bugs zu beheben wird darauf verwiesen, dass es mein Problem sei und nicht deren Problem weil sie den Fehler nicht kennen..

                        Wäre lieb wenn du mir dabei noch helfen könntest. [QSA, L] wäre in dem Fall auch richtig oder?

                        Kommentar

                        Lädt...
                        X