# .htaccess Fragen



## ThiKool (19. Juni 2017)

Hallo zusammen,

ich habe mir eine .htaccess Datei angelegt die von:

www.example.com
auf www.example.com/dir/ weiterleitet.

Die Daten liegen aber tatsächlich unter folgendem Pfad, wohin auch versteckt weitergeleitet wird:
www.example.com/src/data/public.

Soweit, so gut.
Nun möchte ich aber das man das Verzeichnis nicht direkt über den Link
www.example.com/src/data/public
aufrufen kann.

Ist dies möglich?

Danke schon mal im Voraus!


----------



## ThiKool (20. Juni 2017)

Auch eine Möglichkeit Änderungen an der .htaccess zu debuggen wäre sehr hilfreich, denn "Server error" oder "missconfiguration" bringt mich noch zur Verzweiflung.


----------



## sheel (20. Juni 2017)

Hi

Also www.example.com/src/data/public.wird dem Benutzer (hoffentlich) nie angezeigt?
Nenns zB. www.example.com/src/data/publicSJ)(JWOIJDOISJoijadsofmiosdfj (mit einem echten Random-String, nicht nur irgendwie auf die Tastatur hauen), damits niemand allein finden kann.

Dazu natürlich auch sicherstellen, dass Dir-Listing für diese Verzeichnisse aus ist, damit man sich eben nicht den Namen anzeigen lassen kann. Und je nach Wichtigkeit fail2ban verwenden, um Leute die das suchen auszusperren. usw.

...
zum Debuggen:

a) Jede neue Zeile einzeln testen.
b) Nicht den Browser verwenden, sondern zB. wget. Die verschiedenen Browsercaches sind sonst ein Problem (nicht nur Inhalte, sondern auch Redirects usw.)
c) Manchmal haben die Logfiles von Apache auch was Sinnvolles.


----------



## ThiKool (20. Juni 2017)

Vielen Dank schonmal.

Kann ich das auch per PHP Weiterleitungen lösen oder ist die .htaccess Pflicht um unbefugten Zugriff auf die Dateien zu verwehren?

Habe jetzt etwas in PHP umgesetzt, sodass nur auf bestimmte Ordner zugegriffen werden kann, ansonsten wird weitergeleitet.

Also die URI sieht so aus <page>/<subpage>.html
und included data/include/<page>.php

Die .htaccess habe ich sehr kompakt gehalten:


```
ReWriteCond %{REQUEST_URI} !data/
RewriteRule (.*)$ data/public/index.php?rawUri=$1&%{QUERY_STRING} [L]
```

Wie läuft das mit dem debuggen mit wget auf dem Apache localhost?


----------



## sheel (20. Juni 2017)

HTTP-_Weiterleitungen_ mit PHP sind genau das, was du nicht willst ... damit bekommt der Benutzer die Zielurl.

Eine Alternative wäre, den geschützten Ordner per htaccess komplett unzugreifbar zu machen, und die PHP-Datei die Dateien dann auslesen und den Inhalt direkt zum Browser senden zu lassen.
Allerdings ist das sehr umständlich, weil man einige Nebenfunktionen von Apache nachbilden muss (komplette Cachebehandlung, Dataranges, Mimetypen, ...)

Btw., schau dir die Rewrite-Flags genauer an, zB. QSA


----------



## ThiKool (20. Juni 2017)

Ähmm.. PHP Weiterleitungen war der falsche Ausdruck.

Ich habe meinen Beitrag oben nochmal ediert - weiß nicht ob du die Änderungen bei deiner Antwort schon hattest.

Es geht eher darum, dass Dateien per PHP included werden und NICHT direkt aufgerufen werden dürfen (lib, content seiten usw.)


----------



## sheel (20. Juni 2017)

Das hatte ich schon angesprochen ... wenn die einzubindenden Dateien alle PHP sind, geht das, aber sonst müssten die Sachen rund um Cache, Range, Mime usw.usw. nachgebildet werden.


----------

