Ankündigung

Einklappen
Keine Ankündigung bisher.

RewriteRule in vhost.conf für Skript im Unterordner...

Einklappen

Neue Werbung 2019

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

  • RewriteRule in vhost.conf für Skript im Unterordner...

    Hallo Forum,

    nun das Thema ist eigentlich unkompliziert aber ich krieg total ne Kriese weil nichts funktioniert wie es das soll

    Also ich habe aufn Webspace diverse Ordner in dem Skripte installiert sind, folglich muss ich zusehen das für jeden Unterordner eigene rewrite Rules definiert sind damit diese sich nicht gegenseitig stören.
    Theoretisch ganz einfach, praktisch eher nicht =(

    Ordnerstruktur:
    htdocs/projekt_a
    htdocs/projekt_b
    htdocs/projekt_c
    u.s.w.

    Jedes Projekt sollte eben eigene RewriteRules bekommen (.httacces ist auf dem Server nicht zugelassen).

    Ich habe reichlich gegoOogelt, bin sowohl auf den Parameter "Alias" gestoßen als auch auf die Möglichkeit mit <Directory> und <Location> aber egal wie ich es zusammen gesetzt habe, es funktioniert nicht, ich hoffe das ihr mir da weiterhelfen könnt.

    Test #1 - http://domain.tld/wpo/Startseite
    Code:
    RewriteEngine On
    
    Alias "/wpo" "/projekt_wpo"
    <Directory "/projekt_wpo">
        #RewriteBase /wpo oder / oder /projekt_wpo <- wurde ausprobiert
        RewriteRule ^/Startseite$ /index.php/site/portal/home
    </Directory>
    Resultat: ERROR 404

    Test #2
    Code:
    <Directory "/projekt_wpo">
        #Alias /wpo /projekt_wpo <- funktioniert nicht in directory
        #RewriteBase /wpo oder / oder /projekt_wpo  habe ich auch getestet und /wpo bei der Rule vorgesetzt
        RewriteBase /wpo
    
        RewriteRule ^/Startseite$ /index.php/site/portal/home
    </Directory>
    Resultat: ERROR 404

    Naja und so geht es eben weiter, mit verschiedenen Konstellationen dieser Möglichkeiten, mit RewriteBase, Alias und co, so schwer kann es doch nicht sein rewriterules lediglich für nen blöden Unterordner zu erstellen =(

    Mit verzweifelten Grüßen
    Paykoman

  • #2
    Hmm, Niemand der mir sagen mag was ich übersehe? =(

    Kommentar


    • #3
      Ich bin mir grade nicht sicher, ob das ' RewriteEngine On' nicht innerhalb des <Directory /> stehen muss, allerdings könnten die access- und errorlogs aufschluss geben, notfalls mal RewriteLogging auf debug stellen und schauen was da abgeht.
      [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

      Kommentar


      • #4
        Habe leider immo nicht so viel Zeit aber denke werde mich an das Thema in Kürze wieder dran setzten und schauen wie ich an die Logs komme und dann poste ich sie hier wenn ich damit zu keiner Lösung komme.

        Kommentar


        • #5
          Du musst absolute Pfade verwenden.

          Code:
          Alias /wpo /path/to/htdocs/project_wpo
          Genauso für <Directory>:
          Code:
          <Directory "/path/to/htdocs/project_wpo">
          ....
          </Directory>
          Grüße.

          Kommentar


          • #6
            Hallo,

            so es gibt Neuigkeiten...
            Also Alias habe ich hinbekommen, das alleine reicht ja aber nicht aus um für den Unterordner auch Regeln anlegen zu können
            Code:
            Alias /wpo /var/www/vhosts/domain.tld/httpdocs/projekt_wpo
            Nun mit Directory gibt es aber immer noch Probleme:
            Code:
            RewriteEngine On
            RewriteLog "/var/log/apache2/rewrite.log"
            RewriteLogLevel 3
            
            #Alias /wpo /var/www/vhosts/domain.tld/httpdocs/projekt_wpo
            <Directory "/var/www/vhosts/domain.tld/httpdocs/projekt_wpo">
                #RewriteBase /projekt_wpo
            
                RewriteRule ^/Startseite$ /index.php/site/portal/home
            </Directory>
            Alias und RewriteBase war zum testen erst mal ausgeklammert, Ziel war es gewesen http://domain.tld/projekt_wpo/Startseite aufrufen zu können, was ja eigentlich hätte funktionieren müssen.
            Aber es kommt wieder "404 not found", error-log (super hilfreich -,-):
            37.201.229.100 - - [18/Jul/2015:07:29:49 +0200] [domain.tld/sid#7f595ec91920][rid#7f5964ce00a0/initial] (2) init rewrite engine with requested uri /projekt_wpo/Startseite
            37.201.229.100 - - [18/Jul/2015:07:29:49 +0200] [domain.tld/sid#7f595ec91920][rid#7f5964ce00a0/initial] (1) pass through /projekt_wpo/Startseite
            37.201.229.100 - - [18/Jul/2015:07:29:49 +0200] [domain.tld/sid#7f595ec91920][rid#7f5964cdabf0/initial/redir#1] (2) init rewrite engine with requested uri /error_docs/not_found.html
            37.201.229.100 - - [18/Jul/2015:07:29:49 +0200] [domain.tld/sid#7f595ec91920][rid#7f5964cdabf0/initial/redir#1] (1) pass through /error_docs/not_found.html
            Nun bei dieser Variante müsste man ja aber auch immer den realen Ordner-namen in der URL eingeben, Ziel ist es aber dies nicht zu müssen und eben durch "wpo" zu ersetzten und ein Alias zu setzten sofern Directory dann mal funktioniert scheint mir auch nicht unbedingt die beste Lösung zu sein. Von daher gehe ich mal davon aus das hier auch irgend etwas grundlegendes fehlt?

            :: EDIT ::

            Habe da noch was nettes gefunden "http://httpd.apache.org/docs/2.4/rewrite/remapping.html" :

            Code:
            <Directory "/var/www/vhosts/domain.tld/httpdocs/project_wpo">
                RewriteEngine on
                RewriteBase "/var/www/vhosts/domain.tld/httpdocs/project_wpo"
            
                RewriteRule ^/Startseite$ /index.php/site/portal/home
            </Directory>
            Habe da mal die RewriteBase wie dort als absolute path angegeben und ein "RewriteEngine on" innerhalb des Directory gesetzt, bringt aber wieder mal nichts =(

            Kommentar


            • #7
              Dein RewriteRule sollte zurück zum URL-Mapper geleitet werden, setz mal ein [PT] hinter deine Rule.
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar


              • #8
                Lies mal das hier: http://httpd.apache.org/docs/trunk/rewrite/avoid.html
                [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                Kommentar


                • #9
                  Hey,

                  hmm, den Link habe ich mir angesehen, bringt mich jetzt aber nicht weiter bei meinem Problem
                  Ich denke das liegt daran das die Problematik immer noch missverstanden wird.

                  Ich versuch noch mal...
                  Also wenn ich ein CMS direkt im httpdocs Ordner habe, ist das erstellen der Regeln, super einfach und klappt auch wunderbar.
                  Jetzt ist die Situation so, das im htdpdocs Ordner aber KEIN CMS installiert ist, sondern es sich verschiedene Ordner dort befinden und in jedem Ordner ist ein CMS vorhanden (von mir aus auch unterschiedliche, tut aber nix zur Sache).

                  httpdocs/project_a/index.php (eines CMS)
                  httpdocs/project_b/index.php (eines CMS)
                  httpdocs/project_c/index.php (eines CMS)

                  Nun wäre es nötig alle 3 Projekte über die selbe vhost.conf zu verwalten. Man könnte dies z.B. so tun:

                  RewriteRule ^/A/Startseite$ /project_a/index.php/site/portal/home
                  RewriteRule ^/B/Startseite$ /project_b/index.php/site/portal/home
                  RewriteRule ^/C/Startseite$ /project_c/index.php/site/portal/home

                  Diese Variante klappt ist jedoch unschön und nicht angenehm zu pflegen, da ja noch viele weitere Rules folgen.
                  Darum ist mein Gedanke gewesen, für jeden Ordner ein Alias zu erstellen und ein Directory in dem die spezifischen Regeln enthalten sind, ob es so korrekt ist weiß ich nicht, jedoch sind die Versuche es mit Directory zu lösen nach wie vor gescheitert, weil einfach nichts funktioniert.

                  Code:
                  Alias /A /var/www/vhosts/domain.tld/httpdocs/project_a
                  Alias /B /var/www/vhosts/domain.tld/httpdocs/project_b
                  Alias /C /var/www/vhosts/domain.tld/httpdocs/project_c
                  
                  <Directory "/var/www/vhosts/domain.tld/httpdocs/project_a">
                      RewriteRule ^Startseite$ index.php/site/portal/home
                      #... weitere rules hier...
                  </Directory>
                  
                  <Directory "/var/www/vhosts/domain.tld/httpdocs/project_b">
                      RewriteRule ^Startseite$ startseite.php
                      #... weitere rules hier...
                  </Directory>
                  
                  <Directory "/var/www/vhosts/domain.tld/httpdocs/project_c">
                      RewriteRule ^Startseite$ cms.php?route=index/home
                      #... weitere rules hier...
                  </Directory>

                  Kommentar


                  • #10
                    Letzteres mag daran liegen das dein Directory kein RewriteBase zu dem Alias hat. RewriteBase ist ein Apache-Link zu dem eigentlich zu nutzen Pfad des Rewrites. Im Falle von /A bspw. in /var/www/hosts/domain.tld/httpdocs/project_a
                    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                    Kommentar


                    • #11
                      Jetzt ist die Situation so, das im htdpdocs Ordner aber KEIN CMS installiert ist, sondern es sich verschiedene Ordner dort befinden und in jedem Ordner ist ein CMS vorhanden (von mir aus auch unterschiedliche, tut aber nix zur Sache).
                      Code:
                      httpdocs/project_a/index.php (eines CMS)
                      httpdocs/project_b/index.php (eines CMS)
                      httpdocs/project_c/index.php (eines CMS)[
                      zwei ding wollen mir bei deinen posts nicht einleuchten:
                      wieso macht du rewrite in der vhost.con und nicht in einer .htaccess, am besten in der topLevelDir des cms ?
                      wieso setzut du nicht verschiedene domains subdomain oder sonstwas, wenn du sowieso völlig separate cms hast?

                      Kommentar


                      • #12
                        moma Warum sollte er ? .htaccess ist nicht nötig für rewrites und "bremst" den Apache sobald man sie ( .htaccess ) nutzt.
                        [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                        Kommentar


                        • #13
                          @moma: und es sind keine Produktiv-Systeme dort installiert =)

                          Ja den RewriteBase hatte ich auch schon gesetzt. Erstmal muss des Rewrite Zeug ja auch ohne Alias funktionieren...

                          Code:
                          RewriteEngine On
                          
                          #Alias /owp /var/www/vhosts/domain.tld/httpdocs/project_x
                          <Directory "/var/www/vhosts/domain.tld/httpdocs/project_x">
                              RewriteBase /project_x/
                          
                              RewriteRule ^Startseite$ app/plugins/mde/server.php
                          </Directory>
                          So nun rufe ich das gute Stück auf: http://domain.tld/project_x/Startseite, sollte in der Regel funktionieren und folgenden Pfad öffnen: "httpdocs/project_x/app/plugins/mde/server.php", was auch den echten Pfad entspricht.
                          Aber nein es kommt halt immer 404...

                          ::EDIT:: auch mit [PT] am Ende ausprobiert...

                          Kommentar


                          • #14
                            Generell, Rewrites kannst du debuggen: http://httpd.apache.org/docs/current...e.html#logging

                            Schau dir an ob und was rewrite_mod tut.

                            Deine RewriteRule sagt aus das Startseite ( ohne Leading slash ) nach /var/www/vhosts/domain.tld/httpdocs/project_x/app/plugins/mde/server.php weitergereicht wird und das sie nicht die letzte Regel ist.
                            [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                            Kommentar


                            • #15
                              Zitat von tr0y Beitrag anzeigen
                              moma Warum sollte er ? .htaccess ist nicht nötig für rewrites und "bremst" den Apache sobald man sie ( .htaccess ) nutzt.
                              ja, bei zwei zu öfffneden dateien, wenn die verzeichnisstiefe hier stimmt, ist das auf einem nicht productiv sysrtem selbstredent ein big issue,.
                              die zeit welche er braucht alle nase lang seine config einzulesen spielt da eine untergeordnete rolle.

                              as far as I know gibt es nichts, für das man zwingend eine .htaccess benötig, ausser für eine limitierung der zugangsrechte ( keinen zugriff auf die config ).

                              Kommentar

                              Lädt...
                              X