2016-02-04 7 views
6

Ich würde gerne wissen, ob es eine Möglichkeit gibt, den relativen Dokumentenstamm für zusätzliche Sicherheit zu ändern. Ich werde versuchen, mich durch das folgende Beispiel zu erklären:Wie kann das Dokumentenstammverzeichnis im Webserver-Verhalten geändert werden?

/root 
    /app 
    /public 

Angenommen, ein www.example.com Anfrage an den Webserver an den root Ordner zeigen würde.
Ich frage mich, ob es eine Konfiguration, zum Beispiel durch eine .htaccess Datei in diesem root Ordner, die den Server auf den public Ordner statt, so dass alle Remote-Pfade immer relativ zum genannten public Ordner stehen würde.
In diesem Fall www.example.com/app würde einen app Ordner innerhalb von public anstelle von app Ordner innerhalb von root anfordern, so dass letzterer Zugriff von einer Remote-URL-Anfrage nicht möglich ist.
In der gleichen Weise würde www.example.com/public eine public Ordner innerhalb unserer Root public Ordner usw. anfordern.

Ich habe verschiedene Themen wie this one lesen, das eine benutzerdefinierte Konfiguration .htaccess erwähnt mit etwas ähnlichem zu erreichen, aber es erfordert die manuelle Konfiguration der URL-Anfrage in der Datei, während meine Absicht, es nicht ohne weitere Konfiguration zu arbeiten egal, wo Sie die Anwendung hosten. Eine andere mögliche Lösung, die ich gesehen habe, ist eine harte Umleitung durch die .htaccess Datei, die eigentlich nichts löst.

Fühlen Sie sich frei, diesen Beitrag zu bearbeiten, da ich eine harte Zeit gehabt haben könnte, um meinen Standpunkt zu verstehen.

+0

Haben Sie Zugriff auf den gesamten Server? Oder hast du einfach ein cPanel oder ähnliches? –

+0

Cpanel, und das ist die Idee, es auf die meisten Arten von Hosting für die Installation vorzubereiten. Deshalb habe ich nach einer dynamischen Lösung gefragt, wenn überhaupt. – Dante

+0

Normalerweise, in geteilten Hostings (und Sie könnten dasselbe im Falle eines dedizierten tun), geht Ihre Seite in einen Ordner '/ public_html'. Sie können alle anderen Dateien außerhalb davon platzieren, und Sie müssen nichts ändern. Funktioniert das nicht für dich? Wenn nicht, warum? Tut mir leid, wenn ich dein Problem noch nicht bekommen habe. –

Antwort

2

Ich schlage vor, dass Sie Ihren Server sowieso auf den öffentlichen Ordner verweisen, da es viel sicherer ist, dass alle Frameworks sich genauso verhalten, sie alle einen "öffentlichen" Ordner haben, auf den der Server zeigt.

Im öffentlichen Ordner haben Sie einen Einstiegspunkt in Ihre Skripte, wie

index.php 

und von diesem Eintrag werden Sie mit Ihrer Anwendung kommunizieren.

Natürlich können Sie immer noch so arbeiten, wie Sie es gewünscht haben, und es wird großartig funktionieren, aber wer weiß, vielleicht werden Sie etwas verpassen und jemand könnte auf Ihre "inneren" Dateien zugreifen und sie ansehen.

+0

Von dem, was ich von dem, was ich gelesen habe, und alle Antworten, die ich bekam, ist es nicht möglich zu tun, was ich fragte, da das Dokument root scheinbar gelöst ist, bevor Apache nach einem htaccess sucht Datei, und diese lokale Anfrage kann nicht über diesen htaccess geändert werden. Es ist die einzige sichere Option, den Server so einzustellen, dass er nach einem öffentlichen Ordner sucht oder ihn manuell einstellt. Danke für die Antwort. – Dante

7

Sie können diese einfache .htaccess Datei:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/
    RewriteCond %{REQUEST_URI} !^/public/ 
    RewriteRule ^(.*)$ /public/$1 [L] 
</IfModule> 

Jede Anfrage auf Ihrem Server an den öffentlichen Ordner verweisen.

Innerhalb des öffentlichen Ordners können Sie eine zusätzliche .htaccess Datei hinzufügen, die Ihre Site-Regeln behandelt.

+0

Es wird nicht der relative Pfad geändert, sondern lediglich versucht, eine Anforderung an den öffentlichen Ordner umzuleiten. – Dante

+1

Was ist der Unterschied? Wenn jemand 'http: // www.example.com/css/style.css' aufruft, wird er die Datei aus dem öffentlichen Ordner abrufen, ohne das eigentliche Neuschreiben zu sehen. –

+0

Es zeigt tatsächlich das Umschreiben in der URL, wie eine harte Weiterleitung. Es ist auch nur ein Patch, da es eigentlich nicht die Wurzel von Remote-Anfragen verändert, sondern nur umgeleitet wird, ergo nicht, was ich gefragt habe. – Dante

1

Sie sind auf dem Apache-Webserver? Wenn ich richtig verstehe, suchen Sie nach virtuellen Verzeichnissen. Normalerweise müssen wir unsere Webanwendung in den Dokumentenstamm von Apache stellen, um die Anwendung über das Netzwerk zugänglich zu machen. Es gibt jedoch einen Trick, um die Webanwendung weiterhin zugänglich zu machen, obwohl wir sie außerhalb des Apache-Dokumentenstamms platzieren. Bitte lesen Sie hier weiter: http://w3shaman.com/article/creating-virtual-directory-apache Credits zu W3Shaman.com, offensichtlich.

3

Sie können auch mehrere Websites auf einem Webserver hosten. Sie können Virtual Kombinat machen und Alias ​​vor

In diesem Beispiel erwähnt mod_alias unter Verwendung suposed Ihren eigenen Server haben (entweder dedizierte oder VPS)

von Virtual mit Sie auf die Webserver sagen können, wenn Sie eine Anfrage zu empfangen www.example.com zum Bereitstellen von Inhalten aus einem bestimmten Ordner.

Ein Beispiel Virtualhost davon ist:

<Virtualhost *:80> 
ServerName ^domain_or_ip^ 

DocumentRoot ^path of the public folder^ 

DirectoryIndex index.php home.php index.html index.htm 

ErrorLog ^path for a file containing php errors^ 
CustomLog ^path for logging whitch browser and ip visited your site^ combined 
</Virtualhost> 
Verwandte Themen