[gelöst] Zugriffsschutz per htaccess
am 04.11.2020 - 21:24 Uhr in
Ich habe eine zweisprachige Drupal 8 Webseite eingerichtet und versuche per htaccess auf verschiedene Bereiche (z.B. user login) ein zusätzliches http-auth zu ermöglichen. Das klappt auch so lange die Seite mit der Default-Sprache (Deutsch) aufgerufen wird. Wenn aber auch Englisch umgeschaltet ist und ein "en/" mit in der URL auftaucht, greift die Regel nicht mehr.
Die entsprechenden Zeilen in der /.htaccess (ergänzt in Original-Drupal-Datei) sind diese:
AuthType Basic
AuthName "Webseite"
AuthBasicProvider file
AuthUserFile /htdocs/drupal/.htpasswd
<FilesMatch "(update\.php|authorize.php|user|admin)">
Require valid-user
</FilesMatch>
Ich habe es auch schon mit
<FilesMatch "(en/)?(update\.php|authorize.php|user|admin)">
versucht und auch andere Varianten. Immer wenn "en/" in der URL steht und somit auf englisch umgeschaltet wird, kommt kein http-auth.
Ich hatte dazu den Webhoster angeschrieben. Deren Antwort:
diese Frage würden wir Ihnen empfehlen, im Drupal Support Forum zu stellen, da es eine anwendungseitige Umleitung ist und nicht von unserem Webserver abhängig ist.
Ich hoffe ihr habt einen Tipp, wie ich für alle Sprachen den zusätzlichen Auth einstellen kann. Vielen Dank.
- Anmelden oder Registrieren um Kommentare zu schreiben
vielleicht hilft das
am 06.11.2020 - 10:40 Uhr
vielleicht hilft das https://tecadmin.net/configure-basic-authentication-in-apache-using-htac...
C.A.W. Webdesign
Basic auth funktioniert, aber ...
am 10.11.2020 - 08:41 Uhr
Hm..., mir ist gerade nicht klar, wie die Informationen auf der Seite weiterhelfen. Basic auth funktioniert ja, wie beschrieben. Es greift nur nicht, wenn ich eine andere Sprache auf der Webseite auswähle.
Hi,da mich das Problem
am 25.11.2020 - 09:45 Uhr
Hi,
da mich das Problem interessiert, habe ich mich mal damit beschäftigt.
Also das eigentliche Problem ist, dass es sich bei den Sprachpfaden um virtuelle Pfade handelt. Die werden so in der .htaccess nicht abgefrühstückt!
Lösung)
Da der Zugriff für das Login unabhängig von der Sprache ist, musst an der Stelle einfach alles auf das Root umgeleitet werden. Aber auch die default-Sprache nicht vergessen an der Stelle!
Eine entsprechende .htaccess sieht in meiner Dev-Umgebung wie folgt aus (Pfad zur .htpasswd anpassen!):
AuthType Basic
AuthName "demo demo"
AuthBasicProvider file
AuthUserFile /var/www/_de/_preview/.htpasswd
RedirectMatch 302 ^/de/update.php /update.php
RedirectMatch 302 ^/de/authorize.php /authorize.php
RedirectMatch 302 ^/de/user /user
RedirectMatch 302 ^/de/admin /admin
RedirectMatch 302 ^/en/update.php /update.php
RedirectMatch 302 ^/en/authorize.php /authorize.php
RedirectMatch 302 ^/en/user /user
RedirectMatch 302 ^/en/admin /admin
<FilesMatch "(update\.php|authorize.php|user|admin)">
Require valid-user
</FilesMatch>
Das habe ich so getestet und es funktioniert wie gewünscht.
Und um Deinem Provider zu wiedersprechen, das ist kein Drupal Probelm sondern ein Server-Problem ... aber so sind sie halt unsere Freunde vom 1st Lvl Support :)
VG
Peter
Perfekt
am 05.12.2020 - 18:56 Uhr
Vielen Dank dafür.
Das war die entscheidende Info. Damit funktioniert es. Hoffentlich nützt das nun vielen Leuten. :-)
Viele Grüße