Roland Maier: htaccess mod_rewrite zum weiterleiten in einen subfolder

Hi!

ich will alle Zugriffe auf meine Domain, die mittels Subdomain passieren, auf CakePHP weiterleiten => in der Unterordner cakephp/app/webroot/

Aber wenn ich die Seite Aufrufe wird aus dem Aufruf cakephp/app/webroot/cakephp/app/webroot/cakephp/app/webroot/...
Also es wird unendlich oft durchlaufen.
Was muss ich denn an dem Code ändern?

<IfModule mod_rewrite.c>  
   Options		+FollowSymLinks  
   RewriteEngine on  
  
#--------------------------------  
# redirect all subdomains to cakephp  
#--------------------------------  
   RewriteCond %{HTTP_HOST} !^www\.  
   RewriteCond %{HTTP_HOST} !^my-domain\.de  
   RewriteCond %{HTTP_HOST} !^my-domain\.com  
   RewriteCond %{REQUEST_URI} !cakephp/app/webroot/  
   RewriteRule ^$ cakephp/app/webroot/    [L]  
   RewriteRule (.*) cakephp/app/webroot/$1 [L]  
  
</IfModule>

danke
Roland

PS: hier die RewriteLog: http://pastebin.org/254778

  1. Hi!

    ich will alle Zugriffe auf meine Domain, die mittels Subdomain passieren, auf CakePHP weiterleiten => in der Unterordner cakephp/app/webroot/
    Aber wenn ich die Seite Aufrufe wird aus dem Aufruf cakephp/app/webroot/cakephp/app/webroot/cakephp/app/webroot/...
    Also es wird unendlich oft durchlaufen.

    Normalerweise hilft es, als Bedingung noch anzugeben, dass existierende Dateien und Verzeichnisse von der Weiterleitung ausgeschlossen werden. Nach dem Umschreiben werden für den neuen (internen) Request nämlich wieder die zuständigen Per-Verzeichnis-Konfigurationen abgearbeitet. Das [L] hilft dir nicht, denn es unterbindet nur die nachfolgenden Regeln im selben Request.

    Lo!

    1. Ich hätte gehofft das diese Regel das ganze abfängt:
      RewriteCond %{REQUEST_URI} !cakephp/app/webroot/

      Wie kann man denn existierende Dokumente ausschließen von der Weiterleitung ausschließen?

      danke
      Roland

      1. Hi!

        Ich hätte gehofft das diese Regel das ganze abfängt:
        RewriteCond %{REQUEST_URI} !cakephp/app/webroot/

        Es müsste aus dem RewriteLog ersichtlich sein, warum das nicht zieht oder was da genau wirkt. Ich kann es mir nicht ansehen, weil dein Link aus dem OP nichts anzeigt.

        Wie kann man denn existierende Dokumente ausschließen von der Weiterleitung ausschließen?

        Indem man eine RewriteCond hinzufügt, die den REQUEST_FILENAME prüft.

        Lo!

        1. Hi!

          Ja, die Condition wird nur beim ersten ma überprüft, aber danach nicht mehr :-/

          Hier die Log:
          [rid#43c6f28/initial] (3) [perdir C:/xampp/htdocs/htacc/] strip per-dir prefix: C:/xampp/htdocs/htacc/ ->
          [rid#43c6f28/initial] (3) [perdir C:/xampp/htdocs/htacc/] applying pattern '^$' to uri ''
          [rid#43c6f28/initial] (4) [perdir C:/xampp/htdocs/htacc/] RewriteCond: input='testing.htacc.com' pattern='!^www.' => matched
          [rid#43c6f28/initial] (4) [perdir C:/xampp/htdocs/htacc/] RewriteCond: input='testing.htacc.com' pattern='!^my-domain.de' => matched
          [rid#43c6f28/initial] (4) [perdir C:/xampp/htdocs/htacc/] RewriteCond: input='testing.htacc.com' pattern='!^my-domain.com' => matched
          [rid#43c6f28/initial] (4) [perdir C:/xampp/htdocs/htacc/] RewriteCond: input='/' pattern='!cakephp/app/webroot/' => matched
          [rid#43c6f28/initial] (2) [perdir C:/xampp/htdocs/htacc/] rewrite '' -> 'cakephp/app/webroot/'
          [rid#43c6f28/initial] (3) [perdir C:/xampp/htdocs/htacc/] add per-dir prefix: cakephp/app/webroot/ -> C:/xampp/htdocs/htacc/cakephp/app/webroot/
          [rid#43c6f28/initial] (2) [perdir C:/xampp/htdocs/htacc/] strip document_root prefix: C:/xampp/htdocs/htacc/cakephp/app/webroot/ -> /cakephp/app/webroot/
          [rid#43c6f28/initial] (1) [perdir C:/xampp/htdocs/htacc/] internal redirect with /cakephp/app/webroot/ [INTERNAL REDIRECT]
          [rid#43ce0b0/initial/redir#1] (3) [perdir C:/xampp/htdocs/htacc/] strip per-dir prefix: C:/xampp/htdocs/htacc/cakephp/app/webroot/ -> cakephp/app/webroot/
          [rid#43ce0b0/initial/redir#1] (3) [perdir C:/xampp/htdocs/htacc/] applying pattern '^$' to uri 'cakephp/app/webroot/'
          [rid#43ce0b0/initial/redir#1] (3) [perdir C:/xampp/htdocs/htacc/] strip per-dir prefix: C:/xampp/htdocs/htacc/cakephp/app/webroot/ -> cakephp/app/webroot/
          [rid#43ce0b0/initial/redir#1] (3) [perdir C:/xampp/htdocs/htacc/] applying pattern '(.*)' to uri 'cakephp/app/webroot/'
          [rid#43ce0b0/initial/redir#1] (2) [perdir C:/xampp/htdocs/htacc/] rewrite 'cakephp/app/webroot/' -> 'cakephp/app/webroot/cakephp/app/webroot/'
          [rid#43ce0b0/initial/redir#1] (3) [perdir C:/xampp/htdocs/htacc/] add per-dir prefix: cakephp/app/webroot/cakephp/app/webroot/ -> C:/xampp/htdocs/htacc/cakephp/app/webroot/cakephp/app/webroot/
          [rid#43ce0b0/initial/redir#1] (2) [perdir C:/xampp/htdocs/htacc/] strip document_root prefix: C:/xampp/htdocs/htacc/cakephp/app/webroot/cakephp/app/webroot/ -> /cakephp/app/webroot/cakephp/app/webroot/
          [rid#43ce0b0/initial/redir#1] (1) [perdir C:/xampp/htdocs/htacc/] internal redirect with /cakephp/app/webroot/cakephp/app/webroot/ [INTERNAL REDIRECT]

          1. Hi!

            Ja, die Condition wird nur beim ersten ma überprüft, aber danach nicht mehr :-/

            Der initiale Request passt auf ^$ mit seinen RewriteConds. Der umgeschriebene passt nicht auf ^$ sondern auf (.*) und das hat keine RewriteConds.

            Lo!

            1. Ah, jetzt macht alles Sinn.

              Danke!!!

              Roland