# Ich kann keine Webseite in einem Unterordner aufrufen



## M. Zink (23. Nov. 2007)

Ich weiß nicht ob ich irgendwas gemacht hab oder ob ich irgendwas falsch konfiguriert hab oder was genau da lost ist jedenfalls ist es nicht möglich Unterverzeichnisse aufzurufen. Das ist mir aber auch erst grade klar geworden. Kurz zur Erklärung was ich meine.

Ich hab den Webalizer installiert und der legt mir in jedem Web Ordner einen Ordner stats an und füllt diesen mit den Daten.
Rufe ich jetzt www.domain.tld auf dann finde ich dort das Projekt. Das Projekt hat eine recht umfangreiche .htaccess wegen verschiedener Schutzfunktionen als auch RewriteRules.
Nun möchte ich meine Statistik einsehen unter www.domain.tld/stats und werde da auch wie es sein soll nach Benutzername und Kennwort gefragt. Das wird dann auch akzeptiert allerdings sehe ich dann im Browser nichts vom Webalizer sondern das Projekt was eigentlich ein Verzeichnis höher liegt nur ohne Grafiken. Ich hab absolut keine Ahnung was solch ein Verhalten hervor rufen kann. Und die .htaccess kann eigentlich nicht schuld sein da ich erstens das ganze exakt so auf dem alten Server hatte und es da immer lief und zweitens hab ich die .htaccess jetzt auch schon gelöscht und die Regeln in ISPC als Apache Direktive mit <Directory ...> ... </Directory> eingetragen so das die Regeln eigentlich nur noch innerhalb dem Verzeichnis gelten dürften.
Die Konfiguration kann allerdings auf der anderen Seite auch nicht total falsch sein da es für mansche Projekt ohne Probleme funktioniert die Statistik aufzurufen.
Bei einem anderen Projekt z.B. hab ich das Problem das beim Aufruf der Statistik nach Eingabe der Userdaten eine Fehlerseite 404 kommt von wegen The requested URL /stats/index.php was not found on this server. Ich hab aber index.php gar nicht angegeben sondern auch nur www.domain.tld/ststs und das wars.

Das macht mich echt irre sowas wenn ich langsam den Eindruck hab das passiert alles nach dem Zufallsprinziep.


----------



## Till (24. Nov. 2007)

Wenn Du die Regeln im apache direktiven Feld einträgst und die directory Anweisung auf ads web root verweist, gelten sie für die komplette website und somit auch das stats Verzeichnis. Das ist das gleiche, als ob Du sie in einer .htaccess Datei im root Verzeichnis des Webs ablegst.

Ich bin mir sehr sicher, dass Der von Dir beschriebene Fehler mit den zusätzlichen Regeln zusammenhaängt. Nimm einfach mal die Regeln raus, wenn Du dann die Statistiken siehst, weißt Du, woran es liegt.



> Bei einem anderen Projekt z.B. hab ich das Problem das beim Aufruf der Statistik nach Eingabe der Userdaten eine Fehlerseite 404 kommt von wegen The requested URL /stats/index.php was not found on this server. Ich hab aber index.php gar nicht angegeben sondern auch nur www.domain.tld/ststs und das wars.


Dann hast Du in einer .htaccess Datei im web den DirectoryIndex auf index.php gesetzt.



> Das macht mich echt irre sowas wenn ich langsam den Eindruck hab das passiert alles nach dem Zufallsprinziep.


Das ist mict Sicherheit kein Zufall sondern hat alles seine Ursachen in der webseitenspezifischen Apache Konfiguration.


----------



## M. Zink (24. Nov. 2007)

Wie gesagt hab ich bei den Apache Direktiven direkt <Directory ...> mit angegeben und eigentlich war ich immer der Meinung das dann die Regeln auch genau für dieses Verzeichnis gelten. Wenn das nicht so ist kann ich die Statistik nie nutzen da ich sicherlich das Projekt nicht in einem Unterordner laufen lassen werde nur damit das funktioniert. Zumal ich nicht mal sicher bin welche meiner Regeln das verursachen könnte. Ich hab hauptsächlich Rewrite Regeln bezüglich Suchmaschinenoptimierung und so und eben ein paar Regeln die bestimmte IP Adressen usw. aussperren sollen. Ich finde absolut keine Regel die das hervorrufen könnte was ich da hab.

Mein DirectoryIndes lautet portal.html portal.htm portal.php index.html index.htm index.php und somit müsste der ja am Ende anfangen zu suchen.

Gibts denn eine Möglichkeit irgendwelche Regeln wirklich an ein spezifisches Verzeichnis zu binden ohne das Unterverzeichnisse betroffen sind? Denn bei .htaccess geht das nicht und wenn das bei direkten Apache Direktiven in der vhosts.conf auch nicht geht verstehe ich nicht wie das auf dem alten System so problemlos ging.


----------



## M. Zink (26. Nov. 2007)

OK also inzwischen habe ich heraus gefunden das ich doch selbst schuld bin. Ursache dafür ist das ich eine einzelne Regel habe die mit meiner SEO Anpassung in Verbindung steht.



> RewriteRule ^(.*).(htm|html)$ mod_rewrite.php?file=$1


Dadurch wird alles egal in welchem Ordner an die Datei mod_rewrite.php geleitet. Zumindest denke ich das es so ist. Das erklärt aus meiner Sicht zwar nicht wieso der bei einem Projekt z.B. die index.php verlangt aber gut, eins nach dem anderen.

Die Frage ist jetzt ob es eine Möglichkeit gibt bei einer Regel irgendwie eine Abfrage drum herum zu legen. Also sprich das in der Regel so gesehen drin steht "Wenn nicht in irgend einem Unterordner dann...". Ich hab keine Ahnung wie ich das hin bekommen könnte und meine einzige Idee zur Lösung wär das ich alle Links die auf diese Art in meinem Forum erzeugt werden z.B. "seo_" voran stelle und die Regel so ändere das immer dieses "seo_" voran gestellt sein muss. Lösen würde es das Problem ganz sicher aber dafür würden alle indizierten Links bei den Suchmaschinen ins Nirvana laufen. Deshalb erst mal die Frage ob jemand eine Idee hat wie man das anders lösen könnte.


----------



## Till (26. Nov. 2007)

Zitat von M. Zink:


> Die Frage ist jetzt ob es eine Möglichkeit gibt bei einer Regel irgendwie eine Abfrage drum herum zu legen.


Ja, das sind die Rewrite Conditions:

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html


----------



## M. Zink (26. Nov. 2007)

Diese Seite hab ich mir schon 2 mal angeschaut. Aber ich verstehe da weniger als die Hälfte von bzw. ist das mit den Conditions so blöd erklärt finde ich das schnall ich einfach nicht. Dran gedacht hab ich auch schon also einfach zu sagen

RewriteCond %{HTTP_HOST} ^(www.)?domain.tld$ [NC]

Aber das schließt die Unterverzeichnisse ja nicht aus. Ich könnte höchstens dann für jedes Unterverzeichnis eine Condition machen die da heißt und NICHT also mit ! voran gestellt. Ich teste aber mal bisl rum wenn ich weiß wie zeig ich die Lösung mal um ggf. zu erfahren was man hätte besser oder einfacher machen können.


----------



## Till (26. Nov. 2007)

Ich würde es mal mit folgendem versuchen (ungetestet!):
RewriteCond   %{REQUEST_URI} !^www\.*domain*\.de\/stats\/$

um das stats Verzeichnis auszuschließen


----------



## M. Zink (26. Nov. 2007)

Ne das hat leider noch nicht funktioniert. Bringt absolut keine Änderung. Und was ich bis jetzt versucht hab endet entweder genau so oder das die Seite gar nicht mehr erreichbar ist und nen 500er Fehler bringt.

So sieht es jetzt momentan aus.


> RewriteCond %{REQUEST_URI} !^(www.)?domain\.de\/stats\/$
> RewriteRule ^(.*).(htm|html)$ mod_rewrite.php?file=$1


----------

