Thomas M: .htacces - Weiterleitung auf übergeordnetes Verzeichnis

Hallo,
ich habe für den Zugriff von mobilen Geräten auf meine Homepage eine Subdomain beim Host-Anbieter eingerichtet (http://mobil.webseite.de). Diese greift automatisch auf das Verzeichnis /mobile/ im Projekt zu. Dort liegt eine .htaccess, die im übergeordneten Verzeichnis mittels Rewrite auf die Datei index_mobil.php zugreifen soll. Diese Datei ist bis auf ein paar Änderungen (css-Datei, weniger includes) identisch mit der ursprünglichen index.php und daher im gleichen Verzeichnis. Das schien mir nach vielen Recherchen die schnellste Möglichkeit, eine mobile Seite einzurichten.
Probleme habe ich mit der .htaccess-Datei im Ordner /mobile/. Ich habe bisher nirgendwo eine Information gefunden, wie man auf eine Datei im übergeordneten Verzeichnis zugreifen kann. Dabei gilt noch zu beachten, dass ich mit ModRewrite die Ansicht ändere.

Derzeit steht folgendes in der .htaccess:

RewriteEngine On
RewriteRule ^([^.]+)$ index_mobile.php?s=$1 [QSA]

Nochmal kurz, was ich will:
1. Nutzer geht auf http://mobil.webseite.de
2. der Host greift auf den Ordner /mobile/ zurück, wo eine .htaccess liegt
3. ohne, dass es der Nutzer merkt, wird als URL folgende verwendet: www.webseite.de/index_mobile.php
4. der Nutzer soll auch sowas eingeben können: http://mobile.webseite.de/impressum
und die URL wird wie folgt geschrieben http://www.webseite.de/index2.php?s=impressum

Ich hoffe, das ist soweit verständlich und jemand kann mir helfen,
Grüße
Thomas

  1. Ahoi,

    wenn /mobile für die subdomain die document-root ist, kommst du kein verzeichnis höher mehr. kannst du scandir("..") durchführen?

    ansonsten rewritest du schlicht auf neuer_index.php, das ist ja recht simpel.

    Dank und Gruß,

    frankx

    1. Hallo,

      kannst du scandir("..") durchführen?

      Wenn du die PHP-Function meinst, dann zeigt er mir dabei einen Fehler.

      ansonsten rewritest du schlicht auf neuer_index.php, das ist ja recht simpel.

      Was meinst du damit? Ist es nicht das, was ich mit index_mobile probiert habe? Könntest du vielleicht ein Beispiel aufschreiben.

      Danke,
      Thomas

      1. Ahoi,

        wenn du mobile/test.php hast und darin:

        include ("../testinc.php") und in /testinc.php echo "hallo aus testinc"; und das klappt, kannst du auf das verzeichnis darüber zugreifen. ich bezweifle das aber, denn wie ich das kenne, wird für subdomains die "DocumentRoot" festgelegt auf das definierte verzeichnis. Der Apache erlaubt dann u.U. keine Zugriffe in übergeordneten oder parallelen Verzeichnissen.

        Dank und Gruß,

        frankx

        1. echo $begrüßung;

          wenn du mobile/test.php hast und darin:
          include ("../testinc.php") und in /testinc.php echo "hallo aus testinc"; und das klappt, kannst du auf das verzeichnis darüber zugreifen. ich bezweifle das aber, denn wie ich das kenne, wird für subdomains die "DocumentRoot" festgelegt auf das definierte verzeichnis.

          PHP interesiert sich nicht für die Strukturen des Apachen. Es kann auf alle Dateien und Verzeichnisse im System zugreifen, solange es dafür Rechte hat.

          echo "$verabschiedung $name";

          1. Hallo,
            ich habe die Lösung nochmal überdacht und nutze jetzt http://mobil.webseite.de als Aliasdomain zu http://www.webseite.de. In der .htaccess gibt es dann folgenden Eintrag:

            RewriteCond %{HTTP_HOST} ^mobil.(.*)
            RewriteRule ^([^.]+)$ index_mobile.php?s=$1 [QSA]
            RewriteRule ^([^.]+)$ index.php?s=$1 [QSA]

            Er soll also, wenn mobil.webseite.de genutzt wird auf index_mobile.php zugreifen, ansonsten auf index.php und dabei noch die URL umschreiben. Leider funktioniert das nicht so. Warum nicht? Habe ich etwas mit Aliasdomains falsch verstanden? Steht irgendwas im Widerspruch zueinander?

            Gruß und Dank,
            Thomas

            1. Hallo,
              Problem gelöst. Was fehlte war ([^.]*)$ statt ^([^.]+)$ und eine Anpassung des Base_Href-Eintrages im <HEAD> auf die mobil-Domain.

              Die aktuelle Version:

              RewriteCond %{HTTP_HOST} ^mobil.(.*)
              RewriteRule ^([^.]*)$ index_mobile.php?s=$1 [QSA,L]
              RewriteRule ^([^.]*)$ index.php?s=$1 [QSA,L]

              Danke und Gruß,
              Thomas

          2. Ahoi,

            PHP interesiert sich nicht für die Strukturen des Apachen. Es kann auf alle Dateien und Verzeichnisse im System zugreifen, solange es dafür Rechte hat.

            Solange es die hat. Mir ist das schon ein paarmal untergekommen, dass als Fehler kam, es wäre nicht erlaubt, Dateien außerhalb der DocumentRoot einzubinden.

            Dank und Gruß,

            frankx

            1. echo $begrüßung;

              » PHP interesiert sich nicht für die Strukturen des Apachen. Es kann auf alle Dateien und Verzeichnisse im System zugreifen, solange es dafür Rechte hat.
              Solange es die hat. Mir ist das schon ein paarmal untergekommen, dass als Fehler kam, es wäre nicht erlaubt, Dateien außerhalb der DocumentRoot einzubinden.

              Wenn PHP die Rechte fehlen, ist das ein Problem, das du mit dem Administrator der Maschine klären musst, nicht aber mit dem Apachen.

              echo "$verabschiedung $name";

              1. Ahoi,

                Wenn PHP die Rechte fehlen, ist das ein Problem, das du mit dem Administrator der Maschine klären musst, nicht aber mit dem Apachen.

                Ja, wenn das denn möglich ist. Mein Ansatz war zu klären, ob der überhaupt aus der DocumentRoot rauskommt (scandir("..") bringt dann u.U. "you don not have permission to access directory ...", dann wäre ja wohl auch ein rewrite in die "hose" gegengen.

                Dank und Gruß,

                frankx