2016-05-26 2 views
0

Bisher wurde die Website im privaten Netzwerk gehostet, so dass der Zugriff auf Dateien nicht eingeschränkt werden musste.Wie den Zugriff auf öffentliche Dateien mit Apache und PHP zu beschränken?

Die Site ist eine Seite mit einer langen Tabelle, und jede Zeile entspricht einer Datei (mit derselben ID). Wenn Sie auf die Zeile klicken, lädt JS die Datei. Die Dateien sind öffentlich verfügbar, sodass JS sie ohne AJAX laden kann.

Jetzt ist die Seite mooved, um im Internet gehostet zu werden.

Ich kann den Zugriff auf die Hauptseite mit PHP einschränken, aber ich kann die Dateien nicht in unzugängliche Ordner verschieben, da JS nicht geladen werden kann.

Ich habe versucht, alle Zugriffe auf eine Login-Seite umgeleitet, wo PHP wird entscheiden, die wie folgt allowd ist:

in Apache:

RewriteRule (.*) /login.php 

in login.php: wenn nicht outhorized: dissmissed werden

header('Location: ' . $_SERVER['request_url']); 

Das Problem, das ich weiß nicht, wie apache wissen zu lassen, nicht jene ware bereits bestätigt umleiten: und wenn outhrized, wird auf Original-Datei reidrected zurück werden. so jetzt

apache redirect to login.php -> login.php redirect to original page -> apache redirects to login.php -> and so on... 

ich versuchte env varable in PHP zu setzen:

$_ENV['stop_rewrite'] = true; 

und in Apache:

<if !stop_rewrite> 
RewriteRule (.*) /login.php 
</if> 

aber ich bekomme einen 500-Fehler ..

eine Idee Wie kann man das Problem umgehen?

+0

Zuletzt habe ich etwas Derartiges es mit [einem Mod_perl Authentifizierungs handler] war (https://perl.apache.org/ docs/1.0/guide/security.html). Ich glaube nicht, dass es ein PHP-Äquivalent gibt. – Quentin

Antwort

-1

unterhalb der Linie in der .htaccess Datei hinzufügen im Stammverzeichnis:

Options -Indexes 
+0

Die Frage lautet, wie Sie die Authentifizierung zu einer Reihe von URLs hinzufügen und nicht, wie Sie die Anzeige von Verzeichnisindizes für Verzeichnisse deaktivieren, die kein Indexdokument haben. – Quentin

Verwandte Themen