markus111: Alle Anfragen auf Server auf eine Seite umleiten (.htaccess)

Hallo,

ich bin nicht so der Pro in .htaccess, also frag ich mal wie es geht.
Ich habe nichts bei Google gefunden: Ich möchte ALLE anfragen auf eine Datei auf dem Webserver in eine Datei umleiten, wie mach ich das am besten?

mfg.
markus111

  1. Hallo,

    ich bin nicht so der Pro in .htaccess, also frag ich mal wie es geht.
    Ich habe nichts bei Google gefunden: Ich möchte ALLE anfragen auf eine Datei auf dem Webserver in eine Datei umleiten, wie mach ich das am besten?

    Mir Mod_Rewrite. Da gibts auch ne Website zu mit Beispielen.

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. Hallo,

      ich bin nicht so der Pro in .htaccess, also frag ich mal wie es geht.
      Ich habe nichts bei Google gefunden: Ich möchte ALLE anfragen auf eine Datei auf dem Webserver in eine Datei umleiten, wie mach ich das am besten?

      Mir Mod_Rewrite. Da gibts auch ne Website zu mit Beispielen.

      Hotte

      Ich find leider nichts... :(

      Kann mir jemand ein Beispiel zeigen?

  2. ich bin nicht so der Pro in .htaccess, also frag ich mal wie es geht.
    Ich habe nichts bei Google gefunden: Ich möchte ALLE anfragen auf eine Datei auf dem Webserver in eine Datei umleiten, wie mach ich das am besten?

    Mit Umleiten meinst Du, ...

    a) ... dass anstelle von example.org/eins.html der Inhalt von example.org/zwei.html ausgeliefert wird, die URL jedoch weiterhin "eins.html" ist?

    Dann wäre mod_rewrite für Dich die Antwort, ungefähr so:

    ~~~apache RewriteEngine on
      RewriteRule eins.html$ zwei.html

      
    Wenn Du Zugriff auf die httpd.cond hast – bei einem normalen Hoster eher unwahrscheinlich – dann ist auch die Direktive [Alias](http://httpd.apache.org/docs/2.2/mod/mod_alias.html#alias) möglich.  
      
      
    b) ... dass anstelle von example.org/eins.html der Browser auf example.org/zwei.html weiter geleitet wird, also auch die zweite Adresse angezeigt wird?  
      
    Dann gibt es zwei Möglichkeiten. Die [Redirect-Direktive](http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect):  
      
      `Redirect permanent /eins.html http://example.org/zwei.html`{:.language-apache}  
      
    Das „permanent“ kann auch durch „temp“ ersetzt oder weggelassen werden, um anzudeuten, dass die Weiterleitung nur temporär sein soll statt permanent. Man kann das gleiche übrigens mit mod\_rewrite machen, wenn man das Redirect-Flag verwendet:  
      
      ~~~apache
    RewriteEngine on  
      RewriteRule eins\.html$ zwei.html [R]
    

    Wenn Deine Umleitungen nicht nur für eine sondern für mehrere Dateien gelten sollten, wäre es geschickter mod_rewrite (oder RedirectMatch) zu verwenden, weil dieses per default reguläre Ausdrücke verwendet und man mit diesem Muster für mehrere Dateinamen nutzen kann. Allerdings sollte man dabei auch Reguläre Ausdrücke beherrschen. An Lernen führt kein Weg vorbei.

    1. ich bin nicht so der Pro in .htaccess, also frag ich mal wie es geht.
      Ich habe nichts bei Google gefunden: Ich möchte ALLE anfragen auf eine Datei auf dem Webserver in eine Datei umleiten, wie mach ich das am besten?

      Mit Umleiten meinst Du, ...

      a) ... dass anstelle von example.org/eins.html der Inhalt von example.org/zwei.html ausgeliefert wird, die URL jedoch weiterhin "eins.html" ist?

      Dann wäre mod_rewrite für Dich die Antwort, ungefähr so:

      ~~~apache

      RewriteEngine on

      RewriteRule eins.html$ zwei.html

      
      >   
      > Wenn Du Zugriff auf die httpd.cond hast – bei einem normalen Hoster eher unwahrscheinlich – dann ist auch die Direktive [Alias](http://httpd.apache.org/docs/2.2/mod/mod_alias.html#alias) möglich.  
      >   
      >   
      > b) ... dass anstelle von example.org/eins.html der Browser auf example.org/zwei.html weiter geleitet wird, also auch die zweite Adresse angezeigt wird?  
      >   
      > Dann gibt es zwei Möglichkeiten. Die [Redirect-Direktive](http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect):  
      >   
      >   `Redirect permanent /eins.html http://example.org/zwei.html`{:.language-apache}  
      >   
      > Das „permanent“ kann auch durch „temp“ ersetzt oder weggelassen werden, um anzudeuten, dass die Weiterleitung nur temporär sein soll statt permanent. Man kann das gleiche übrigens mit mod\_rewrite machen, wenn man das Redirect-Flag verwendet:  
      >   
      >   ~~~apache
      
      RewriteEngine on  
      
      >   RewriteRule eins\.html$ zwei.html [R]
      
      

      Wenn Deine Umleitungen nicht nur für eine sondern für mehrere Dateien gelten sollten, wäre es geschickter mod_rewrite (oder RedirectMatch) zu verwenden, weil dieses per default reguläre Ausdrücke verwendet und man mit diesem Muster für mehrere Dateinamen nutzen kann. Allerdings sollte man dabei auch Reguläre Ausdrücke beherrschen. An Lernen führt kein Weg vorbei.

      Was ich möchte ist, das alle Anfragen auf die Datei /site_down.html umgeleitet werden... Ich find mich da nicht so richtig zurecht...

      mfg.
      markus111

      1. hi,

        Was ich möchte ist, das alle Anfragen auf die Datei /site_down.html umgeleitet werden... Ich find mich da nicht so richtig zurecht...

        IN .htaccess

        RewriteEngine on
        RewriteRule ^.*.html$    /site_down.html

        Leitet alle Anfragen auf *.html-Dateien um.

        Ungetestet:
        RewriteRule ^.*$    /site_down.html

        dürfte _jeden_ Request umschießen.

        Hotte

        PS: Ist google kaputt oder kommst Du nicht zurecht damit?

        --
        Smile :)
        1. Hi,

          RewriteRule ^.*$    /site_down.html

          dürfte _jeden_ Request umschießen.

          Leider auch den nach /site_down.html, womit das ganze dann in einer Endlosschleife landet - diese Adresse müsste also noch explizit ausgeschlossen werden.

          MfG ChrisB

          --
          Light travels faster than sound - that's why most people appear bright until you hear them speak.
          1. Hi,

            RewriteRule ^.*$    /site_down.html

            dürfte _jeden_ Request umschießen.

            Leider auch den nach /site_down.html, womit das ganze dann in einer Endlosschleife landet - diese Adresse müsste also noch explizit ausgeschlossen werden.

            Jetzt, wo Du sagst, stimmt, kann ich aus eigener Erfahrung bestätigen ;-)

            Also irgendwie gibts da auch was gegen Endlosschleifen....

            Hotti

            --
            Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
            1. Moin Moin,

              RewriteRule ^.*$    /site_down.html

              dürfte _jeden_ Request umschießen.

              Leider auch den nach /site_down.html, womit das ganze dann in einer Endlosschleife landet - diese Adresse müsste also noch explizit ausgeschlossen werden.

              Jetzt, wo Du sagst, stimmt, kann ich aus eigener Erfahrung bestätigen ;-)

              Also irgendwie gibts da auch was gegen Endlosschleifen....

              joa da gibts noch die Last Direktive...

              RewriteEngine On
              RewriteRule ^.*$ index.php [L]

              dann kommt keine Endlosschleife mehr zustande ;-)

              mfG Felix Nehrke

              P.S.: Besuche unseren Blog:  http://www.pommes-blog.de

              --
              Manchmal gibs was neues :)
              fo:| ch:| rl:( br:> n4:? ie:( va:) de:> zu:) fl:( ss:| ls:[ js:)
              1. Hi,

                joa da gibts noch die Last Direktive...

                RewriteEngine On
                RewriteRule ^.*$ index.php [L]

                dann kommt keine Endlosschleife mehr zustande ;-)

                Doch.

                http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule:
                "Remember, however, that if the RewriteRule generates an internal redirect (which frequently occurs when rewriting in a per-directory context), this will reinject the request and will cause processing to be repeated starting from the first RewriteRule."

                Hier ist also entweder ein Suchmuster erforderlich, welches auf site_down.html nicht matched; oder - vielleicht etwas einfacher - eine vorgeschaltete RewriteCond, die den REQUEST_URI darauf abtestet, dass er nicht auf site_down.html lautet.

                P.S.: Hast du diesbezüglich noch Feedback?

                MfG ChrisB

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.
                1. Moin Moin,

                  Doch.

                  Oh, mein Fehler, aber gemerkt habe ich das noch nie sind die Apache etwa so freundlich eingestellt, oder woran kann das liegen?

                  P.S.: Hast du diesbezüglich noch Feedback?

                  Jo, ich hab jetzt erst noch was dazu geschrieben, da das ganze WE voll in der Hand des Fussballs war.

                  mfG Felix Nehrke

                  P.S.: Besuche unseren Blog:  http://www.pommes-blog.de

                  --
                  Manchmal gibs was neues :)
                  fo:| ch:| rl:( br:> n4:? ie:( va:) de:> zu:) fl:( ss:| ls:[ js:)
                  1. Hi,

                    Doch.

                    Oh, mein Fehler, aber gemerkt habe ich das noch nie sind die Apache etwa so freundlich eingestellt, oder woran kann das liegen?

                    Das trifft nur zu, wenn du das Rewriting in per-directory-Kontext machst - also bspw. per .htaccess.
                    Wenn es in der Serverkonfiguration vorgenommen wird, gelten andere Gesetzmässigkeiten.

                    Und falls du doch .htaccess benutzt hast - dann waren es vielleicht andere Umstände, wegen denen bei dir "nichts passiert" ist.

                    MfG ChrisB

                    --
                    Light travels faster than sound - that's why most people appear bright until you hear them speak.