Redirect 301 funktioniert nicht wie es sollte

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

  • #16
    „Dynamisieren“ kann man RewriteRules natürlich - mittels regulärer Ausdrücke.
    Genau das will ich, nur wie geht das?

    Da hätte ich noch eine Frage. Bei dem Gebilde oben, muss man noch ein / am Ende der Url setzen. Ist es möglich das weg zu lassen? So funktioniert es leider nicht:
    RewriteCond %{QUERY_STRING} ^site=blah$ [NC]
    RewriteRule ^index\.php$ /blah? [R=301,NE,NC,L]
    Zuletzt geändert von joextra; 24.08.2016, 10:11.
    Erfahrungen vererben sich nicht jeder muss sie allein machen.

    Kommentar


    • #17
      Zitat von wahsaga Beitrag anzeigen
      Erst mal editiere bitte deine Posts, und entferne die Verlinkungen.
      Btw., für Beispiele gibt es explizit die Domains example.com/.net/.org
      .
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #18
        So, hab die URLs geändert.
        Erfahrungen vererben sich nicht jeder muss sie allein machen.

        Kommentar


        • #19
          Also, ich habs jetzt so gemacht, das ich mir eine PHP Funktion geschrieben habe, die das hier:
          RewriteCond %{QUERY_STRING} ^site=blah$ [NC]
          RewriteRule ^index\.php$ /blah/? [R=301,NE,NC,L]
          aufbaut. Somit ist dynamisierung nicht mehr nötig. Aber könnte vielleicht jemand das hier noch beantworten:
          Da hätte ich noch eine Frage. Bei dem Gebilde oben, muss man noch ein / am Ende der Url setzen. Ist es möglich das weg zu lassen?
          Erfahrungen vererben sich nicht jeder muss sie allein machen.

          Kommentar


          • #20
            Auf welches Gebilde genau beziehst du dich jetzt, und wo muss der Slash gesetzt werden, in der angefragten URL, oder der umgeschriebenen?
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              auf das was ich oben geschrieben habe.
              Das funktioniert:
              RewriteCond %{QUERY_STRING} ^site=blah$ [NC]
              RewriteRule ^index\.php$ /blah[COLOR="red"]/[/COLOR]? [R=301,NE,NC,L]

              das nicht:
              RewriteCond %{QUERY_STRING} ^site=blah$ [NC]
              RewriteRule ^index\.php$ /blah? [R=301,NE,NC,L]

              Bei dem bekomme ich Umleitungsfehler.
              Erfahrungen vererben sich nicht jeder muss sie allein machen.

              Kommentar


              • #22
                Zitat von joextra Beitrag anzeigen
                Bei dem bekomme ich Umleitungsfehler.
                Das wird an den anderen Regeln liegen, die du zusätzlich noch hast, um die Umleitung in die andere Richtung vorzunehmen.

                Browser fordert /blah an, du schreibst intern zu index.php?site=blah um.

                Dann geht es in die nächste Runde [1], und deine neue Regel greift - und bewirkt wieder einen Redirect zu /blah, weil das ja die „schöne URL“ ist, die du nach außen hin haben willst.
                Und das wird dann wieder zu index.php?site=blah umgeschrieben, und so weiter und so fort.

                Da müsste also noch eine zusätzliche Bedingung mit rein, die prüft was der ursprüngliche Request war, und diese Umleitung nur dann macht, wenn index.php?site=blah wirklich vom Browser angefordert wurde, und nicht nur das Ergebnis der internen Umschreiberei ist.


                [1] Wenn rewriting per .htaccess konfiguriert wird, dann wird der ganze Prozess so lange immer wieder erneut durchlaufen, bis keine Regel mehr greift.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #23
                  Also, ich habe davor noch zwei Regeln.
                  # rewrite example.com → Example Domain
                  RewriteCond %{HTTPS} off
                  RewriteCond %{HTTP_HOST} !=127.0.0.1
                  RewriteCond %{HTTP_HOST} !^www\.
                  RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

                  RewriteCond %{REQUEST_FILENAME} !-f
                  RewriteRule ^([^-]*)$ /index.php?site=$1 [L]

                  Ohne die 301 Weiterleitung von oben, hat es ohne ein slash am Ende funktioniert.
                  Erfahrungen vererben sich nicht jeder muss sie allein machen.

                  Kommentar


                  • #24
                    so, hab jetzt einfach die URLs um ein slash am Ende ergänzt. Geht wohl schneller als das hier noch weiter durch zu diskutieren. Trotzdem danke für die Hilfe. Gerade der Link von wahsaga hat mich weiter gebracht.
                    Erfahrungen vererben sich nicht jeder muss sie allein machen.

                    Kommentar


                    • #25
                      Hatte ein ganz ähnliches Problem.
                      Wollte an dieser Stelle einfach mal Danke sagen!

                      Kommentar

                      Lädt...
                      X