Dieser Code ist nützlich für Setups mit mehreren Umgebungen (Staging, Produktion usw.). Er ermöglicht es Ihnen, Ihre .htaccess-Dateien synchron zu halten und gleichzeitig eine htpasswd auf Ihrer Entwicklungsumgebung oder allem außer der Live-Umgebung zu unterhalten.
#allows a single uri through the .htaccess password protection
SetEnvIf Request_URI "/testing_uri$" test_uri
#allows everything if its on a certain host
SetEnvIf HOST "^testing.yoursite.com" testing_url
SetEnvIf HOST "^yoursite.com" live_url
Order Deny,Allow
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/your/.htpasswd
AuthGroupFile /
Require valid-user
#Allow valid-user
Deny from all
Allow from env=test_uri
Allow from env=testing_url
Allow from env=live_url
Satisfy any
Ich fand Ihre .htaccess-Konfiguration ziemlich gut, aber ich fand es nützlicher, allen zu erlauben und dann von Staging zu verweigern.
Unten ist das Gegenteil von dem, was Sie in diesem Artikel haben.
Macht weiter so!
#-- Staging-Server-Passwort -------------------------#
SetEnvIf Host yourstagingserver.com passreq
AuthType Basic
AuthName "Staging Server"
AuthUserFile /home/username/.htpasswd
AuthGroupFile /home/username/.htgroup
Require valid-user
Order allow,deny
Allow from all
Deny from env=passreq
Satisfy any
Vielen Dank für den obigen Code.
Außerdem vielen Dank an Fugazer für das obige Skript! Hat einwandfrei funktioniert.
Hallo,
Ich versuche etwas Ähnliches zu tun, bin mir aber nicht sicher, ob es möglich ist. Ich habe ein Bilderverzeichnis auf meinem Server und möchte, dass die Bilder nur von einer meiner PHP-Seiten aufgerufen werden können, um Hotlinking und direkten Zugriff zu verhindern. Zum Beispiel
Verzeichnis
http://www.meineseite.com/bilder/
enthält die Dateien: 001.jpg / 002.jpg / usw.
Seite
http://www.meineseite.com/bilder.php?datei=001
um die Datei 001.jpg anzuzeigen
Irgendwelche Ideen, wie ich meine .htaccess-Datei konfigurieren sollte?
PS: Ich weiß nicht, ob es wichtig ist, da Sie REQUEST_URI verwenden, aber ich habe mehrere Domains auf meinem Server (z. B. http://www.meineseite.com und http://www.meineseite.net)
Ja, genau das suche ich seit Sonntag. Hotlinking von nur einem Server zu nur einer einzigen URL.
@BRAULIO hast du eine Lösung gefunden ??
Vielleicht funktionieren diese Vorschläge für Sie, George
Etwa auf halber Strecke auf der Seite gibt es einen Abschnitt über das Hotlinking von Bildern.
http://www.gwizit.com/articles/getout.php
Schien meiner Website zu helfen, nicht weiter gehotlinkt zu werden.
Ich gehe das Buch durch und grabe mich in WordPress ein und habe die index.php-Datei in das Stammverzeichnis kopiert und die entsprechenden Anpassungen vorgenommen… Dann habe ich die Einstellungen im Admin-Dashboard überprüft…
Ich habe die .htaccess-Datei vergessen … Ich habe danach gesucht … und sie nicht in den Kerndateien gefunden … also habe ich eine mit http://www.coffeecup.com's .htaccess-Software erstellt … aber als ich die Seite aktualisierte … bekam ich immer wieder eine Anmeldepuffern, nur um die Homepage anzuzeigen … oder Änderungen im Dash vorzunehmen … wie kann ich die .htaccess einfügen, ohne mich jedes Mal anmelden zu müssen?
Vielen Dank für diesen Artikel.
Meine Idee war es, den Zugriff auf alle Seiten meiner Website zu beschränken, mit Ausnahme der Seiten, deren URL mit "/admin" beginnt. Daher habe ich das obige Beispiel wie folgt modifiziert:
Jetzt funktionieren Seiten mit "/admin..."-URLs ohne Passwort einwandfrei, und andere Seiten erfordern zunächst eine Authentifizierung. Nach der Eingabe des Passworts erhalte ich jedoch eine interne Serverfehlermeldung (500).
Könnte mir bitte jemand dabei helfen? :)
Vielen Dank! Weiter so mit guter Arbeit…
Dieser Artikel war auch sehr hilfreich für mich – viele ähnliche Beispiele wie oben
http://perishablepress.com/enable-file-or-directory-access-to-your-htaccess-password-protected-site/
Ich habe mich für Fugazers Beispiel entschieden, aber danke für den Artikel und die Hilfe.
Wirklich hilfreicher Artikel, danke!
Ich filtere derzeit eine Website nach IP, aber ich muss meine RSS-Feeds durchlassen oder besser gesagt, nicht nach IP filtern.
Gibt es eine Möglichkeit, eine Regel in htaccess zu erstellen, um alles außer Feeds zu filtern?
Danke
Nur eine Erwähnung wert. Wenn Sie das obige Beispiel verwenden, aber dann auch alles auf eine index.php umschreiben, wie es bei einigen PHP-Frameworks der Fall ist, funktioniert das obige nicht. Ich bin mir nicht sicher warum, aber ich dachte, es wäre erwähnenswert.
Jeremy,
Es funktioniert mit PHP-Frameworks, die .htaccess für URL-Rewrites verwenden. Sie müssen nur sicherstellen, dass diese Logik über der Stelle steht, an der Sie Ihre Rewrites für index.php durchführen.
Zum Beispiel schützt die folgende Zeile eine bestimmte URL (/admin) mit einem Passwort, erlaubt ihr aber, ohne Passwort zu funktionieren, wenn sie meinem lokalen Hostnamen entspricht.
#erlaubt eine einzelne URI durch den .htaccess-Passwortschutz
SetEnvIf Request_URI "/testing_uri$" test_uri
#erlaubt alles, wenn es sich auf einem bestimmten Host befindet
SetEnvIf HOST "^testing.yoursite.com" testing_url
SetEnvIf HOST "^yoursite.com" live_url
Order Deny,Allow
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/your/.htpasswd
AuthGroupFile /
Require valid-user
#Allow valid-user
Deny from all
Allow from env=test_uri
Allow from env=testing_url
Allow from env=live_url
Satisfy any
Ich möchte eine einzelne Seite meiner Website (www.example.com/extranet/) schützen.
Wie kann ich diesen Schnipsel verwenden, um das zu beheben? Hilfe wäre sehr willkommen.
Ich bin übrigens auf Apache/2.4.27 (cPanel) (nicht sicher, ob das wichtig ist).
Hilfreicher Artikel, aber bei der Apache-Version 2.4.x, die mein Hoster verwendet (NearlyFreeSpeech), ist `Allow` keine gültige Direktive mehr.
Für den Fall, dass dies für andere hilfreich ist: Ich habe eine Website mit SSL mit Let's Encrypt eingerichtet und später die gesamte Website auf htpasswd umgestellt. Dies führte natürlich dazu, dass der von Let's Encrypt benötigte tlssetup-Cronjob (der auf ein .well-known-Verzeichnis auf Ihrer Website zugreift) fehlschlug.
Die schnelle Lösung für mich war, eine .htaccess-Datei im .well-known-Verzeichnis zu erstellen, die einfach die Zeile `Require all granted` enthält. Jetzt ist die gesamte Website geschützt, mit Ausnahme dieses Verzeichnisses.