Hallo!
Nach einem Serverumzug greift die .htaccess nicht mehr. Ich habe gesetzt
<Directory "/var/www/root"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
Warum greift die .htaccess nicht mehr? Der webserver wurde neu gestartet. Es macht manchmal keinen Spaß mehr.
Grüße
Andreas
Am Sonntag, den 21.04.2019, 21:47 +0200 schrieb Andreas Meyer:
Hallo!
Nach einem Serverumzug greift die .htaccess nicht mehr. Ich habe gesetzt
<Directory "/var/www/root"> Options Indexes FollowSymLinks AllowOverride All Require all granted
</Directory>
Warum greift die .htaccess nicht mehr? Der webserver wurde neu gestartet. Es macht manchmal keinen Spaß mehr.
Zwecks Fehlersuche: bau mal einen Parser-Fehler in die .htaccess ein und schau ob das einen 500 Internal Server Error produziert. Wenn das hinfällt wird die Datei noch gelesen, aber der Inhalt nicht bzw. nicht wie erwartet ausgewertet. Wenn das nicht hinfällt wird die Datei nicht gelesen.
Ich würde aus dem Bauch raus darauf tippen, dass das Verzeichis in dem die Datei liegt AllowOverride None gesetzt hat und die Datei daher gar nicht gelesen wird.
Ansonsten ist <Directory> soweit ich mich entsinne bei .htaccess implizit (das Directory ist das in dem die Datei liegt) und darf nicht angegeben werden. Das kann sich aber zwischenzeitlich (in den letzten 15 Jahren) geändert haben.
Viele Grüße, Andreas
Andreas Rogge a.rogge@solvention.de schrieb am 21.04.19 um 22:18:35 Uhr:
Am Sonntag, den 21.04.2019, 21:47 +0200 schrieb Andreas Meyer:
Hallo!
Nach einem Serverumzug greift die .htaccess nicht mehr. Ich habe gesetzt
<Directory "/var/www/root"> Options Indexes FollowSymLinks AllowOverride All Require all granted
</Directory>
Warum greift die .htaccess nicht mehr? Der webserver wurde neu gestartet. Es macht manchmal keinen Spaß mehr.
Zwecks Fehlersuche: bau mal einen Parser-Fehler in die .htaccess ein und schau ob das einen 500 Internal Server Error produziert. Wenn das hinfällt wird die Datei noch gelesen, aber der Inhalt nicht bzw. nicht wie erwartet ausgewertet. Wenn das nicht hinfällt wird die Datei nicht gelesen.
Ich würde aus dem Bauch raus darauf tippen, dass das Verzeichis in dem die Datei liegt AllowOverride None gesetzt hat und die Datei daher gar nicht gelesen wird.
Ansonsten ist <Directory> soweit ich mich entsinne bei .htaccess implizit (das Directory ist das in dem die Datei liegt) und darf nicht angegeben werden. Das kann sich aber zwischenzeitlich (in den letzten 15 Jahren) geändert haben.
Also eine Parser-Fehler bekomme ich mit 500 Internal Server Error. Die Datei wird demnach gelesen.
Require user me AuthType Basic AuthName "Passwort bitte!" AuthUserFile /etc/httpd/user/memd5.pwd
greift aber nicht.
Grüße
Andreas
Hallo Andreas,
um Dir besser helfen zu können, wären natürlich Deine Konfigurationsdateien sehr hilfreich, jedoch wenn Du das nicht möchtest, erst einmal folgendes, was Du überprüfen solltest:
----- %< -----
AllowOverride-Direktive: (https://httpd.apache.org/docs/2.4/de/mod/core.html#allowoverride) =======================
Wenn der Server eine .htaccess-Datei (wie durch AccessFileName definiert) findet, muss er wissen, welche in der Datei angegebenen Direktiven frühere Konfigurationsanweisungen überschreiben dürfen. Nur in <Directory>-Abschnitten verfügbar
AllowOverride ist nur in <Directory>-Abschnitten gültig, die ohne reguläre Ausdrücke definiert wurden, nicht in <Location>-, <DirectoryMatch>- oder <Files>-Abschnitten.
---> WICHTIG !!!
Wenn diese Anweisung auf None gesetzt wird, dann werden .htaccess-Dateien komplett ignoriert. In diesem Fall wird der Server nicht einmal versuchen, die .htaccess-Dateien im Dateisystem zu lesen.
Wenn diese Anweisung auf All gesetzt wird, dann ist jede Direktive in den .htaccess-Dateien erlaubt, die den Kontext .htaccess besitzt.
WICHTIG !!! <---
Der Direktiven-Typ kann z.B. eine der folgenden Anweisungsgruppen sein: =======================================================================
AuthConfig Erlaubt die Verwendung von Autorisierungs-Anweisungen (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require usw.). usw. ...
----- %< -----
Eine Möglichkeit wäre den Inhalt der .htaccess einfach z.B. in den die /etc/httpd/conf/httpd.conf, direkt in die <Directory>...</Directory> Konfiguration zu packen:
z.B.
<Directory "/var/www/root"> Options -Indexes +FollowSymLinks AllowOverride AuthConfig AuthType Basic AuthName "Passwort bitte!" AuthBasicProvider file AuthUserFile /etc/httpd/user/memd5.pwd" Require user me </Location>
Das setzt natürlich auch eine entsprechend gültige PAsswortdatie: /etc/httpd/user/memd5.pwd voraus!
(Siehe auch: https://httpd.apache.org/docs/2.4/programs/htpasswd.html)
Require user me AuthType Basic AuthName "Passwort bitte!" AuthUserFile /etc/httpd/user/memd5.pwd
greift aber nicht.
Grüße
Andreas
-- PGP-Fingerprint: D392 5D21 0299 63D7 5BAE 4562 1E56 B2EA 81A2 59F1
Grüße Klaus.
Hallo!
Klaus Tachtler klaus@tachtler.net schrieb am 22.04.19 um 06:53:57 Uhr:
Hallo Andreas,
um Dir besser helfen zu können, wären natürlich Deine Konfigurationsdateien sehr hilfreich, jedoch wenn Du das nicht möchtest, erst einmal folgendes, was Du überprüfen solltest:
----- %< -----
AllowOverride-Direktive: (https://httpd.apache.org/docs/2.4/de/mod/core.html#allowoverride) =======================
Wenn der Server eine .htaccess-Datei (wie durch AccessFileName definiert) findet, muss er wissen, welche in der Datei angegebenen Direktiven frühere Konfigurationsanweisungen überschreiben dürfen. Nur in <Directory>-Abschnitten verfügbar
AllowOverride ist nur in <Directory>-Abschnitten gültig, die ohne reguläre Ausdrücke definiert wurden, nicht in <Location>-, <DirectoryMatch>- oder <Files>-Abschnitten.
---> WICHTIG !!!
Wenn diese Anweisung auf None gesetzt wird, dann werden .htaccess-Dateien komplett ignoriert. In diesem Fall wird der Server nicht einmal versuchen, die .htaccess-Dateien im Dateisystem zu lesen.
Wenn diese Anweisung auf All gesetzt wird, dann ist jede Direktive in den .htaccess-Dateien erlaubt, die den Kontext .htaccess besitzt.
WICHTIG !!! <---
Der Direktiven-Typ kann z.B. eine der folgenden Anweisungsgruppen sein:
AuthConfig Erlaubt die Verwendung von Autorisierungs-Anweisungen (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require usw.). usw. ...
----- %< -----
Eine Möglichkeit wäre den Inhalt der .htaccess einfach z.B. in den die /etc/httpd/conf/httpd.conf, direkt in die <Directory>...</Directory> Konfiguration zu packen:
z.B.
<Directory "/var/www/root"> Options -Indexes +FollowSymLinks AllowOverride AuthConfig AuthType Basic AuthName "Passwort bitte!" AuthBasicProvider file AuthUserFile /etc/httpd/user/memd5.pwd" Require user me
</Location>
Das setzt natürlich auch eine entsprechend gültige PAsswortdatie: /etc/httpd/user/memd5.pwd voraus!
(Siehe auch: https://httpd.apache.org/docs/2.4/programs/htpasswd.html)
Require user me AuthType Basic AuthName "Passwort bitte!" AuthUserFile /etc/httpd/user/memd5.pwd
greift aber nicht.
Ich konnte das Problem lösen.
Gesetzt hatte ich am Anfang der .htaccess
Require user me AuthType Basic AuthName "Passwort bitte!" AuthUserFile /etc/httpd/user/memd5.pwd
dann folgen ein paar
SetEnvIfNoCase User-Agent "AESOP_com_SpiderMan" bad_bot SetEnvIfNoCase User-Agent "Alexibot" bad_bot SetEnvIfNoCase User-Agent "Anonymouse.org" bad_bot .....
und dann kommt am Ende
<Limit GET POST HEAD> <RequireAll> Require all granted Require not env bad_bot </RequireAll> </Limit>
Dieses Require all granted am Ende überschreibt das Require user me am Anfang. Kommentiere ich das am Ende aus und habe dann nur noch Require not env bad_bot, greift die Authentifizierung am Anfang der .htaccess
Danke für eure Unterstützung!
Grüße
Andreas