Ich habe einen .htaccess, der die Basisauthentifizierung verwendet. Es scheint, dass der Pfad zur .htpasswd-Datei nicht relativ zur htaccess-Datei ist, sondern zur Serverkonfiguration.
Obwohl ich die Dateien .htaccess und .htpasswd im selben Verzeichnis habe, funktioniert dies nicht:
AuthType Basic
AuthName "Private Login"
AuthUserFile .htpasswd
Require valid-user
Es funktioniert jedoch, wenn ich die AuthUserFile so ändere, dass der absolute Pfad verwendet wird:
AuthType Basic
AuthName "Private Login"
AuthUserFile "/home/user/public_html/mydir/.htpasswd"
Require valid-user
Ich würde jedoch etwas Mobileres bevorzugen, da ich dies auf mehreren Websites in verschiedenen Bereichen verwende. Ich habe im Internet gesucht, aber keine Lösung gefunden. Ist es möglich, relative Pfade oder Variablen wie zu verwenden %{DOCUMENT_ROOT}
?
/var/...
) verwendet - und die Frage lautet: "Wie wird ein relativer Pfad verwendet?"Für den Fall, dass die Leute nach einer Lösung dafür suchen:
quelle
req('Host')
, kann der Kunde diesen Wert nicht austricksen?1) Beachten Sie, dass es als unsicher angesehen wird, wenn sich die
.htpasswd
Datei unter dem Serverstamm befindet.2) Die Dokumente sagen dies über relative Pfade, so dass es so aussieht, als hätten Sie kein Glück:
3) Während die Antworten, die die Verwendung von Umgebungsvariablen empfehlen, einwandfrei funktionieren, würde ich lieber einen Platzhalter in die
.htaccess
Datei einfügen oder verschiedene Versionen in meiner Codebasis haben und den Bereitstellungsprozess alles einrichten lassen (dh Platzhalter ersetzen oder umbenennen / Verschieben Sie die entsprechende Datei).In Java-Projekten verwende ich Maven, um diese Art von Arbeit zu erledigen. In PHP-Projekten möchte ich beispielsweise ein Shell-Skript build.sh und / oder install.sh haben, das die bereitgestellten Dateien an ihre Umgebung anpasst. Dadurch wird Ihre Codebasis von den Besonderheiten der Zielumgebung (dh den Umgebungsvariablen und Konfigurationsparametern) entkoppelt. Im Allgemeinen sollte sich die Anwendung an die Umgebung anpassen. Wenn Sie es umgekehrt machen, können Probleme auftreten, wenn die Umgebung auch unterschiedliche Anwendungen oder völlig unabhängige systemspezifische Anforderungen berücksichtigen muss.
quelle
Sie können Ihre Auth-Einstellungen in eine Umgebung stellen. Mögen:
Die Auth funktioniert, aber ich konnte meine Umgebung nicht wirklich zum Laufen bringen.
quelle
/Users/...
) verwendet - und die Frage lautet: "Wie wird ein relativer Pfad verwendet?".htpasswd erfordert einen vollständigen absoluten Pfad vom absoluten Stamm des Servers.
Bitte erhalten Sie den vollständigen absoluten Pfad der Datei per Echo
echo $_SERVER['DOCUMENT_ROOT'];
.Hier funktioniert das grundlegende Auth .htaccess-Skript.
Vor dem Login
Afetr Login
quelle
Wenn Sie versuchen, XAMPP unter Windows zu verwenden und eine .htaccess-Datei auf einem Live-Server verwenden und auch auf einem XAMPP-Entwicklungscomputer entwickeln möchten, funktioniert Folgendes hervorragend!
1) Stellen Sie nach einer Neuinstallation von XAMPP sicher, dass Apache als Dienst installiert ist.
2) Wenn Apache als Dienst installiert ist, fügen Sie eine neue Umgebungsvariable als Flag hinzu.
3) Starten Sie Apache
4) Erstellen Sie Ihre .htaccess-Datei mit den folgenden Informationen ...
Um das obige Skript hier zu erklären, sind ein paar Anmerkungen ...
5) Erstellen Sie Ihre Passwortdatei (in diesem Fall .htpasswd) mit den folgenden Informationen ...
Ein paar Dinge zu beachten ...
quelle
/home...
) verwendet - und die Frage lautet: "Wie wird ein relativer Pfad verwendet?"oder wenn Sie auf localhost entwickeln (nur für Apache 2.4+):
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich habe nur nach dem gleichen Thema gesucht, und wahrscheinlich suchen viele andere nach einer schnellen, mobilen Lösung. Folgendes habe ich mir endlich ausgedacht:
quelle
/var...
) verwendet - und die Frage lautet: "Wie wird ein relativer Pfad verwendet?".htaccess
Datei unterstützt. Wenn Sie einen relativen Pfad verwenden, wird dieser als relativ zum Pfad betrachtetServerRoot
.Nehmen wir ein Beispiel.
Ihre Anwendung befindet sich in / var / www / myApp auf einem Linux-Server
.htaccess : /var/www/myApp/.htaccess
htpasswdApp : / var / www / myApp / htpasswdApp . (Sie können einen beliebigen Namen für .htpasswd verwenden Datei verwenden.)
So verwenden Sie den relativen Pfad in .htaccess :
Es wird jedoch nach einer Datei im Verzeichnis server_root gesucht . Nicht in document_root .
In unserem Fall, wenn sich die Anwendung unter / var / www / myApp befindet :
document_root ist / var / www / myApp
server_root ist / etc / apache2 // (nur in unserem Beispiel, weil wir den Linux-Server verwenden )
Sie können es in Ihrer Apache-Konfigurationsdatei ( /etc/apache2/apache2.conf) neu definieren ) neu definieren, aber ich denke, es ist eine schlechte Idee.
Um den relativen Dateipfad in Ihrem /var/www/myApp/.htaccess zu verwenden , sollten Sie die Datei des Kennworts in Ihrer server_root definieren .
Ich mache es lieber mit folgendem Befehl:
Sie können meinen Befehl kopieren, einen festen Link anstelle eines Symbols verwenden oder eine Datei auf Ihre server_root kopieren .
quelle