Gandalfthegrey: HTACCESS get-Weiterleitung

Hallo,
Ich habe bereits nach Antworten zu dieser Frage gesucht, jedoch keine adäquate gefunden.

Die Annahme besteht darin, ein Formular (method:get) mit einem Input-Feld(name:p) zu besitzen. Klickt man auf Submit, erscheint in der URL automatisch filename.php?p=EINGABE

Interessieren würde mich, wie man es mittels HTACCESS so einstellt, dass statt ?p= in der URL filename/p:EINGABE erscheint. Wie gesagt, alles was ich bis jetzt gefunden habe, war nicht unbedingt zielführend ;)

Wie funktioniert das? (Wenn möglich bitte auch mit Beispiel)

mfg

  1. Die Annahme besteht darin, ein Formular (method:get) mit einem Input-Feld(name:p) zu besitzen. Klickt man auf Submit, erscheint in der URL automatisch filename.php?p=EINGABE
    Interessieren würde mich, wie man es mittels HTACCESS so einstellt, dass statt ?p= in der URL filename/p:EINGABE erscheint. Wie gesagt, alles was ich bis jetzt gefunden habe, war nicht unbedingt zielführend ;)
    Wie funktioniert das? (Wenn möglich bitte auch mit Beispiel)

    Beispiele gibt es im Netz.
    ungetestet

    RewriteCond %{QUERY-STRING} ^p=([^=&]+)
    RewriteRule ^filename.php filename/p:%1 [L]

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  2. Hi!

    Interessieren würde mich, wie man es mittels HTACCESS so einstellt, dass statt ?p= in der URL filename/p:EINGABE erscheint. Wie gesagt, alles was ich bis jetzt gefunden habe, war nicht unbedingt zielführend ;)

    Ein Webserver ist nicht in der Lage, die im Browser angezeigte URL zu ändern. Das wäre ein Sicherheitsrisiko. Webserver kann einen Browser nur auffordern, eine andere URL aufzurufen.

    Wenn dein Browser aus einem Formular einen bestimmten Request erzeugt, dann ist das so und höchstens clientseitig mit Javascript zu ändern.

    Lo!

    1. Hi!

      Interessieren würde mich, wie man es mittels HTACCESS so einstellt, dass statt ?p= in der URL filename/p:EINGABE erscheint. Wie gesagt, alles was ich bis jetzt gefunden habe, war nicht unbedingt zielführend ;)

      Ein Webserver ist nicht in der Lage, die im Browser angezeigte URL zu ändern. Das wäre ein Sicherheitsrisiko. Webserver kann einen Browser nur auffordern, eine andere URL aufzurufen.

      Wenn dein Browser aus einem Formular einen bestimmten Request erzeugt, dann ist das so und höchstens clientseitig mit Javascript zu ändern.

      Lo!

      Aber bei diversen anderen Seiten funktioniert das doch auch? (/filename/EINGABE statt ?p=EINGABE. Ich bin mir relativ sicher, dass es mit .htaccess funktioniert, inwiefern man das Formular (action:filename.php) und die .htaccess-Datei bearbeiten muss, ist mir jedoch nicht klar.

      mfg

      1. Aber bei diversen anderen Seiten funktioniert das doch auch?

        Nein, tut es nicht - es sieht nur so aus :) Man wird vermutlich einfach umgeleitet.

        Das Umschreiben/Umleiten wird vermutlich mit mod_rewrite erledigt - siehe Beats Posting.

      2. Aber bei diversen anderen Seiten funktioniert das doch auch? (/filename/EINGABE statt ?p=EINGABE.

        Ja aber dann wird das erste via mod_rewrite zum letzteren umgeschrieben.
        Also umgekehrt zu dem was du denkst.

        Ich bin mir relativ sicher, dass es mit .htaccess funktioniert, inwiefern man das Formular (action:filename.php) und die .htaccess-Datei bearbeiten muss, ist mir jedoch nicht klar.

        Deine php publiziert URLs, deren Aktivierung zu entsprechenden Einträgen im Location Bar und in der Browserhistory führen.
        .htaccess hat die Aufgabe, dazu zu sorgen dass beide Versionen, nämlich die publizierten Urls, sowie die via GET erstellten Formular-URLs mit Query-String zur gleichen Ressource führen.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Deine php publiziert URLs, deren Aktivierung zu entsprechenden Einträgen im Location Bar und in der Browserhistory führen.
          .htaccess hat die Aufgabe, dazu zu sorgen dass beide Versionen, nämlich die publizierten Urls, sowie die via GET erstellten Formular-URLs mit Query-String zur gleichen Ressource führen.

          mfg Beat

          Und wie ist es nun möglich, statt dem ?p=EINGABE in der URL einfach /filename/p:EINGABE anzeigen zu lassen? Wie musst die htaccess aussehen, und wie muss das Formular angepasst werden?

          mfg

          1. Und wie ist es nun möglich, statt dem ?p=EINGABE in der URL einfach /filename/p:EINGABE anzeigen zu lassen? Wie musst die htaccess aussehen, und wie muss das Formular angepasst werden?

            Das Formular muss nicht angepasst werden.
            Aber deine PHP muss andere Links publizieren (aber nicht in action Attributen).

            Das Aussehen der Regeln ist im Netz gut dokumentiert.

            RewriteRule ^search/[^/]+ search.php?q=$1 [L]

            Das erlaubt dir, prädefierte Suchurls als Links zu publizieren.

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
            Der Valigator leibt diese Fische
            1. RewriteRule ^search/[^/]+ search.php?q=$1 [L]

              Das erlaubt dir, prädefierte Suchurls als Links zu publizieren.

              mfg Beat

              Die Methode mit dem Link ist mir bekannt. Die Frage war, wie der URL-Suffix mittels HTACCESS geändert wird.

              http://www.xyz.com/filename.php?t=eingabe soll zu
              http://www.xyz.com/filename/t:eingabe werden.

              mfg

              1. RewriteRule ^search/[^/]+ search.php?q=$1 [L]

                Das erlaubt dir, prädefierte Suchurls als Links zu publizieren.

                Die Methode mit dem Link ist mir bekannt. Die Frage war, wie der URL-Suffix mittels HTACCESS geändert wird.

                Gut. Das wurde ja beantwortet.

                mfg Beat

                --
                ><o(((°>           ><o(((°>
                   <°)))o><                     ><o(((°>o
                Der Valigator leibt diese Fische
                1. RewriteRule ^search/[^/]+ search.php?q=$1 [L]

                  Das erlaubt dir, prädefierte Suchurls als Links zu publizieren.

                  Die Methode mit dem Link ist mir bekannt. Die Frage war, wie der URL-Suffix mittels HTACCESS geändert wird.

                  Gut. Das wurde ja beantwortet.

                  mfg Beat

                  .. sodass beim Absenden des Formulars in der URL nicht ?p=EINGABE zu lesen ist, sondern /filename/p:EINGABE.

                  Das angegebene Script hat leider nicht funktioniert.

                  mfg

                  1. .. sodass beim Absenden des Formulars in der URL nicht ?p=EINGABE zu lesen ist, sondern /filename/p:EINGABE.

                    Das angegebene Script hat leider nicht funktioniert.

                    https://forum.selfhtml.org/?t=193327&m=1290891

                    mfg Beat

                    --
                    ><o(((°>           ><o(((°>
                       <°)))o><                     ><o(((°>o
                    Der Valigator leibt diese Fische
          2. Und wie ist es nun möglich, statt dem ?p=EINGABE in der URL einfach /filename/p:EINGABE anzeigen zu lassen? Wie musst die htaccess aussehen,

            https://forum.selfhtml.org/?t=193327&m=1290881

            und wie muss das Formular angepasst werden?

            Garnicht - du musst nur dafür sorgen, dass beim Aufruf von /filename/p:EINGABE wieder ?p=EINGABE beim Script ankommt (auch das kann mod_rewrite).

            1. Und wie ist es nun möglich, statt dem ?p=EINGABE in der URL einfach /filename/p:EINGABE anzeigen zu lassen? Wie musst die htaccess aussehen,

              https://forum.selfhtml.org/?t=193327&m=1290881

              Nein. ich bezweifle, dass er das will.

              und wie muss das Formular angepasst werden?

              Garnicht - du musst nur dafür sorgen, dass beim Aufruf von /filename/p:EINGABE wieder ?p=EINGABE beim Script ankommt (auch das kann mod_rewrite).

              Und genau das macht das verlinkte Beispiel nicht.

              mfg Beat

              --
              ><o(((°>           ><o(((°>
                 <°)))o><                     ><o(((°>o
              Der Valigator leibt diese Fische
              1. Und genau das macht das verlinkte Beispiel nicht.

                Das hab' ich auch nicht behauptet - aber den REQUEST_URI zerlegen und einen Query-String zusammenzubauen läuft vom prinzip gleich ab.

            2. Hallo,

              du musst nur dafür sorgen, dass beim Aufruf von /filename/p:EINGABE wieder ?p=EINGABE beim Script ankommt

              nicht unbedingt; das Script kann ja auch so angelegt sein, dass es die anwenderfreundlicheren URLs direkt "versteht". Gerade bei URLs, in denen die Parameter mit einem Slash abgetrennt sind und wie Verzeichnisse aussehen (Beispiel: http://example.org/search/product/manual/install), bietet sich die Auswertung von $_SERVER['PATH_INFO'] an.

              So long,
               Martin

              --
              Es gibt Tage, da gelingt einem einfach alles.
              Aber das ist kein Grund zur Sorge; das geht vorbei.
      3. Hi!

        Bitte keine Vollzitate sondern nur das zitieren, auf das du dich konkret beziehst. Danke.

        Aber bei diversen anderen Seiten funktioniert das doch auch? (/filename/EINGABE statt ?p=EINGABE. Ich bin mir relativ sicher, dass es mit .htaccess funktioniert, inwiefern man das Formular (action:filename.php) und die .htaccess-Datei bearbeiten muss, ist mir jedoch nicht klar.

        Bitte beobachte diese Seiten genau, notfalls auch indem du dir (beispielsweise mit der livehttpheaders-Extension für den Firefox) den Request-Response-Verkehr anschaust.

        Es gibt diverse Websites, die ihre URLs "freundlich" gestalten. Insoweit stimmt das, aber auch die können nicht zaubern, sondern diese Gestaltung nur für feststehende Links vorgeben. Wenn ein Formular mit der GET-Methode und Parametern abgesendet werden soll, wird der Browser für die Parameter den Querystring nehmen, wenn du nicht mit Javascript eingreifst. Möchtest du nach der Formularwertverarbeitung, dass der Browser eine andere "freundlichere" URL aufruft, kannst du das mit einer Weiterleitung auf diese "freundlichere" URL veranlassen. Diese kann als Response auf die Formularverarbeitung erfolgen, so dass der Anwender nur kurzzeitig die "unschöne" URL sieht.

        Lo!