2016-05-03 9 views
0

Ich weiß, dass es ähnliche (aber nicht genau die gleichen) Fragen gibt, die gestellt wurden, aber keine der Lösungen scheint für mich zu funktionieren.Einschränken des Zugriffs auf ein Verzeichnis auf einen bestimmten Referrer

Ich habe eine Website: xy.com/public. Ich habe eine andere Seite namens xy.com/private. xy.com/public steht der Öffentlichkeit zur Verfügung. Ich möchte jedoch nicht, dass die Öffentlichkeit direkten Zugriff auf xy.com/private hat (d. H. Ich möchte nicht, dass Nutzer die URL in ihren Browser eingeben und Zugriff auf die Inhalte von xy.com/private haben).

Stattdessen möchte ich den Zugriff auf xy.com/private THROUGH xy.com/public bereitstellen können. Oder, um es anders auszudrücken, eine Seite in xy.com/public würde eine Seite in xy.com/private aufrufen und ihren Inhalt der Person zur Verfügung stellen, die sie auf diese Weise anfordert. Ich bin mir ziemlich sicher, dass es eine Möglichkeit geben muss, dies mit .htaccess zu tun. Ich benutze Apache in einem VPS mit Centos OS. Ich habe viele Stunden damit verbracht, eine Lösung zu finden, aber ohne Erfolg. Ich vermute, dass die Rewrite-Engine verwendet würde.

Jede Hilfe wäre dankbar erhalten.

+0

bedeutet das, dass Sie nur aus privaten und verhindern Anfrage alle Datei in privaten direkt benötigen? oder müssen Sie alles privat in die Öffentlichkeit umleiten? oder du meinst, dass du die private/anypage.php anzeigen musst, aber nur, wenn sie von öffentlichen Verzeichnisseiten angefordert wird? –

+0

Danke. Ich möchte private/anypage.php anzeigen können, aber nur wenn es von public/anypage.php aufgerufen wird. Ich möchte verhindern, dass Personen, die die URL von private/anypage.php kennen, direkt darauf zugreifen, indem sie die URL in ihren Browser eingeben. Grundsätzlich möchte ich jeden, der private/anypage.php nutzt, dazu zwingen, dies über die öffentliche Seite zu tun. –

+0

also, wenn jemand private/somepage.php anfordern will, wird es public/somepage.php sein? –

Antwort

0

Setzen Sie den folgenden Code in die private .htaccess-Datei, so dass niemand in der Lage ist, private/file.php oder private/image.png zu durchsuchen (siehe diese Codezeile RewriteRule. (Php | gif | jpg | png) $ - [F], so können Sie addieren, was Sie wie js wollen oder CSS etc .. Gerade jetzt ist es für Bild mit Erweiterungen jPG, pNG oder gIF sowie pHP-Dateien)

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xy.com [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xy.com.*$ [NC] 
RewriteRule \.(php|gif|jpg|png)$ - [F] 

aber sie können Ordner durchsuchen nur wenn sie zum Beispiel einen Link aus dem öffentlichen oder einem anderen Verzeichnis drücken.

Hinweis:

Wenn jemand versuchen, privat zu beantragen/wrongpage.php wird es geben Fehler, wenn Sie es durch mehrere Möglichkeiten, zum Beispiel 404 Errordocument /path/to/error/page.php Griff

Update:

Wenn Sie die Anforderung nur aus öffentlichen Verzeichnis kommen alle benötigen, können Sie den obigen Code mit der follo ändern Flügel aber immer noch in privaten Verzeichnis .htaccess Datei:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xy.com/public [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xy.com/public.*$ [NC] 
RewriteRule \.(php|gif|jpg|png)$ - [F] 
+0

Vielen Dank Mohammed. Es klappt. Ich schätze Ihre Bemühungen sehr! –

+0

Froh zu helfen, Sie sind willkommen –

Verwandte Themen