droom: Einschränkungen in der .htaccess

Hi folks,

Der alte Auftritt meiner Typo3-Webseite ist noch unter www2 zu erreichen und der neue (ohne Typo3) über www.
Ich möchte eine Weiterleitung einrichten. Diese soll jeden www2-Seitenaufruf auf die www-Startseite weiterleiten. Aber 2 Seiten, die ich spezifizieren kann sollen weiterhin über www2 erreichbar sein, weil die nicht im neuen Auftritt sind.

Ich habe gedacht, ich könnte die .htaccess Datei im root-verzeichnis von typo3 modifizieren. ich weiß leider nicht wie.

mod_rewrite ist natürlich wegen Typo3 installiert.

vielen Dank für jegliche Hilfe.

Droom

  1. Ich habe gedacht, ich könnte die .htaccess Datei im root-verzeichnis von typo3 modifizieren. ich weiß leider nicht wie.

    Erstelle eine RewriteRule die beim Auftreten deiner "2 Seiten" das Rewriting stoppt (siehe "- (dash)" und "L" in der Doku) - sämtlicher anderer Traffic wird umgeleitet.

    1. Vielen Dank für deine Antwort. Leider habe ich keine Ahnung wie sowas funktioniert.
      Es Scheint für dich leicht zu sein ;-) Vielleicht sagst Du mir mal genau wie

      1. Hi,

        Vielen Dank für deine Antwort. Leider habe ich keine Ahnung wie sowas funktioniert.

        Dann informiere dich - mod_rewrite ist im Netz gut dokumentiert, zumal für so etwas relativ einfaches, wie du es vorhast.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
      2. Es Scheint für dich leicht zu sein ;-) Vielleicht sagst Du mir mal genau wie

        Die wichtigsten Dinge in mod_rewrite sind RewriteCond und RewriteRule

        Die Bedingungen (Cond) gelten für die nachfolgen Regel (Rule) und können auf verschiedene Felder des HTTP-Headers (bzw. auf Umgebungsvariablen) angewandt werden.

        Sie werden sequentiell abgearbeitet, sofern nicht irgendwo unterbrochen wird - z.B. durch das L-Flag (Last Rule).

        Beispiel:

        alle Requests unabhängig sämtlicher Umgebungsvariablen auf foobar.html werden auf "nichts" umgebschrieben, sprich ignoriert. Wenn das zutrifft, ist es die letzte Regel und mod_rewrite hört mit dar ausführung auf.

        RewriteRule ^foobar.html$ - [L]

        Wenn der HTTP_HOST _nicht_ rebell.at entspricht, wird folgende Regel ausgeführt

        RewriteCond %{HTTP_HOST} !^example.com$

        Es wird auf example.com umgeleitet (per 301) und alles im REQUEST_URI hinten angehängt.

        RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

        1. Hallo suit,

          erstmal vielen Dank. Ein teil des Code klappt ganz gut. Aufrufe mit www3 gehen auf der Startseite von www.
          Nur RewriteRule ^foobar.html$ - [L] funtkioniert nicht.

          Mein Code sieht so aus:
          RewriteRule ^online-test.html$ - [L]
          RewriteRule ^auftrag.html$ - [L]
          RewriteCond %{HTTP_HOST} !^www.example.de$
          RewriteRule ^(.*) http://www.example.de [R,L]

          wenn ich www3.example.com/auftrag.html aufrufe, geht er auf www.example.com/auftrag.html. Habe ich etwas falsch gemacht?

          vielen Dank.

          Droom

          1. Mein Code sieht so aus:
            RewriteRule ^online-test.html$ - [L]
            RewriteRule ^auftrag.html$ - [L]
            RewriteCond %{HTTP_HOST} !^www.example.de$
            RewriteRule ^(.*) http://www.example.de [R,L]

            wenn ich www3.example.com/auftrag.html aufrufe, geht er auf www.example.com/auftrag.html. Habe ich etwas falsch gemacht?

            Ganz unten auf der Dokumentationsseite - ggf. liegts an der Unterscheidung zwischen per-server und per-directory ;)

            ^/auftrag.html$

            bzw folgendes um zu sparen.

            ^/(auftrag|online-test).html$

            Eigentlich sollte sowas in die Richtung ohnehin schon in der default .htaccess von TYPO3 stehen.

            1. Vielen Dank nochmal.
              Gibt es eine Möglichkeit ein RewriteRule zu machen in der Art "Rewrite alles aber nicht die seite x zu y"?

              z.B.:
              RewriteRule ^(.*)& !^/(auftrag|online-test).html$ http://www.example.de [R,L]

              1. Vielen Dank nochmal.
                Gibt es eine Möglichkeit ein RewriteRule zu machen in der Art "Rewrite alles aber nicht die seite x zu y"?

                z.B.:
                RewriteRule ^(.*)& !^/(auftrag|online-test).html$ http://www.example.de [R,L]

                So funktioniert das nicht, aber mit conditional subpatterns müsste das möglich sein - ob das von Apache unterstützt wird weiß ich nicht, zudem ist das schon ein ziemlicher Handstand den dann vermutlich keiner mehr versteht.

              2. Hi!

                Gibt es eine Möglichkeit ein RewriteRule zu machen in der Art "Rewrite alles aber nicht die seite x zu y"?

                Mit RewriteCond kann man RewriteRules einschränken.

                Lo!

                1. Mit RewriteCond kann man RewriteRules einschränken.

                  Sag ich ja - z.B. lässt sich per RewriteCond der REQUEST_URI auswerten.

            2. Habe herausgefunden,warum ^/auftrag.html$ und ^auftrag.html$ nicht funktionieren.
              Meine alte T3-Webseite hat realurl und in der .htaccess Datei steht schon folgendes:
              RewriteEngine On
              RewriteRule ^typo3$ - [L]
              RewriteRule ^typo3/.*$ - [L]
              RewriteCond %{REQUEST_FILENAME} !-f
              RewriteCond %{REQUEST_FILENAME} !-d
              RewriteCond %{REQUEST_FILENAME} !-l
              RewriteRule .* index.php

              Wenn ich nun das hier darunter schreibe:

              RewriteRule ^online-test.html$ - [L]
              RewriteRule ^/online-test.html$ - [L]
              RewriteCond %{HTTP_HOST} !^www.example.de$
              RewriteRule ^(.*) http://www.example.de [R,L]

              leitet mich trotzdem www3.example.de/online-text.html zu www.example.de

              Realurl bietet die Möglichkeit redirect mit regex zu machen in der Art:

              'redirects_regex' => array(

              '^downloads/(.*)' => 'ftp://dl.domain.tld/public/dl/\1',

              ),

              darum wollte wissen, ob etwas wie:
              RewriteRule ^(.*)& !^/(auftrag|online-test).html$ http://www.example.de [R,L] funtkionieren wurde, dann hätte ich es bei realurl eingetragen.

              1. Hi,

                Meine alte T3-Webseite hat realurl und in der .htaccess Datei steht schon folgendes:
                RewriteEngine On
                RewriteRule ^typo3$ - [L]
                RewriteRule ^typo3/.*$ - [L]
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteCond %{REQUEST_FILENAME} !-l
                RewriteRule .* index.php

                Wenn ich nun das hier darunter schreibe:

                RewriteRule ^online-test.html$ - [L]
                RewriteRule ^/online-test.html$ - [L]
                RewriteCond %{HTTP_HOST} !^www.example.de$
                RewriteRule ^(.*) http://www.example.de [R,L]

                ... dann ist das natürlich zu spät, da die Regeln zunächst mal von oben nach unten abgearbeitet werden.

                MfG ChrisB

                --
                “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
                1. ... dann ist das natürlich zu spät, da die Regeln zunächst mal von oben nach unten abgearbeitet werden.

                  Das sagte ich bereits ;)

              2. Habe herausgefunden,warum ^/auftrag.html$ und ^auftrag.html$ nicht funktionieren.
                Meine alte T3-Webseite hat realurl und in der .htaccess Datei steht schon folgendes:
                RewriteEngine On
                RewriteRule ^typo3$ - [L]
                RewriteRule ^typo3/.*$ - [L]
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteCond %{REQUEST_FILENAME} !-l
                RewriteRule .* index.php

                Das hier ist ggf. ausbaufähiger - zumal du mit deiner ersten Regel vermutlich garnicht ins TYPO3-Backend kommst, wenn du den Trailing-Slash vergisst.

                RewriteEngine On

                RewriteCond %{REQUEST_FILENAME} -f [OR]
                RewriteCond %{REQUEST_FILENAME} -d [OR]
                RewriteCond %{REQUEST_FILENAME} -l
                RewriteRule .* - [L]

                RewriteRule ^typo3$ typo3/ [L]

                RewriteRule .* index.php [L]

                Realurl bietet die Möglichkeit redirect mit regex zu machen in der Art:
                    '^downloads/(.*)' => 'ftp://dl.domain.tld/public/dl/\1',

                Das unterscheidet sich jetzt von einer RewirteRule genau durch was[1]?

                darum wollte wissen, ob etwas wie:
                RewriteRule ^(.*)& !^/(auftrag|online-test).html$ http://www.example.de [R,L] funtkionieren wurde, dann hätte ich es bei realurl eingetragen.

                Nein, hättest du nicht machen sollen - das sagt sogar der Entwickler von RealURL :)

                RealURL erfüllt seinen Zweck, die Performance ist aber Mist - man sollte so viel wie möglich davon wegverlagern.

                btw: weil's grade zum Thema passt, hier ein bisschen Werbespam für einen Artikel von mir :p
                Trailing Slash bei RealURL entfernen

                [1] Mit Ausnahme der Tatschache dass man auf sämtliche mod_rewrite-Features verzichten muss ;)

                1. Hi Suit,

                  stecke immer in der Klemme. Haste eine idee, wie ich mein Problem lösen kann?

                  viele Grüße.

                  Droom