.htaccess ohne Wirkung
Dieter Raber
- webserver
Hallo,
ich habe einen Apache 2 unter Linux laufen. .htaccess ist in der httpd.conf eingetragen, im Standardverzeichnis erhalte ich auch einen Prompt zur Authentifizerung. Ich habe jetzt ein Alias ausserhalb vom Root angelegt, das ich auch ueber den Browser ansprechen kann. Die .htaccess-Datei bleibt jedoch ohne Wirkung, d.h. ich kann ohne, dass User/Password abgefragt werden, auf die Seite zugreifen. Einen Fehler in der .htaccess kann ich ausschliessen, die ist beide Male gleich.
Kann mir da vielleicht jemand weiterhelfen?
Gruß,
Dieter
Hallo Dieter
Ich hatte das selbige Problem auch mal vor Jahren.
Schau mal in deine httpd.conf nach dem Eintrag der htaccess
meine schaut da so aus
<Files ~ "^.ht">
Order allow,deny
Deny from all
</Files>
Vielleicht hilfts ja.
Thomas
hallo,
du formulierst unerwartet ungenau.
ich habe einen Apache 2 unter Linux laufen.
Das ist zwar verständlich, sollte aber genauer benannt werden: welches Linux, welcher Apache (es gibt Unterschiede, auch wenn sie nicht die .htacces-Technik betreffen)?
.htaccess ist in der httpd.conf eingetragen
Wie ist das was eingetragen?
im Standardverzeichnis erhalte ich auch einen Prompt
Welches "Standardverzeichnis", mit welcher URL hast du deine .htacces-geschützte DocumentRoot aufzurufen versucht, geht das eventuell über einen virtuellen Host?
Ich habe jetzt ein Alias ausserhalb vom Root angelegt
Das bedarf einer sehr genauen Erläuterung, da hier vermutlich dein Problem liegt.
Die .htaccess-Datei bleibt jedoch ohne Wirkung
Möglicherweise, weil sie nicht über denselben Alias angesprochen wird. Es macht einen Unterschied, welcher Container für deinen Alias und welcher für deine .htaccess vorgesehen wurde.
Einen Fehler in der .htaccess kann ich ausschliessen
Du weißt aber, daß solche Aussagen hier im Forum zu den gefährlichsten gehören und aufs genaueste nachgeprüft werden wollen?
Kann mir da vielleicht jemand weiterhelfen?
Noch nicht wirklich, fürchte ich.
Grüße aus Berlin
Christoph S.
Hallo Christoph,
du formulierst unerwartet ungenau.
Mea culpa, das war wohl ein Schnellschuss
ich habe einen Apache 2 unter Linux laufen.
Das System ist ein Clark Connect (RedHat) 2.6.9-19.cc mit Apache 2.0.52-13.cc (cc steht fuer Clark Connect)
.htaccess ist in der httpd.conf eingetragen
Wie ist das was eingetragen?
AccessFileName .htaccess
im Standardverzeichnis erhalte ich auch einen Prompt
Welches "Standardverzeichnis", mit welcher URL hast du deine .htacces-geschützte DocumentRoot aufzurufen versucht, geht das eventuell über einen virtuellen Host?
DocumentRoot "/var/www/html"
Einen Prompt erhalte ich, wenn ich den Hostnamen oder die IP benutze, also direkt auf dieses Verzeichnis zugreife. Einen viruellen Host gibt es nicht, lediglich ein Alias.
Ich habe jetzt ein Alias ausserhalb vom Root angelegt
Das bedarf einer sehr genauen Erläuterung, da hier vermutlich dein Problem liegt.
Unten and die httpd.conf habe ich angefuegt:
Alias /aliasname /var/www/testarea/mein_verzeichnis
<Directory /var/www/testarea/mein_verzeichnis>
Options Indexes MultiViews ExecCGI
DirectoryIndex index.php
Order allow,deny
Allow from all
</Directory>
Einen Fehler in der .htaccess kann ich ausschliessen
Du weißt aber, daß solche Aussagen hier im Forum zu den gefährlichsten gehören und aufs genaueste nachgeprüft werden wollen?
Ja, weiss ich (kopfmitdackelblicknachuntenricht)
Es ist eine 1:1 Kopie jener .htaccess die im Document Root funktioniert:
AuthName "Test Area"
AuthType Basic
AuthUserFile /var/www/testarea/mein_verzeichnis/.htusers
Require user foo
Und die .htusers sieht so aus:
foo:passwort_mit_crypt
Gruß,
Dieter
hallo Dieter,
Unten and die httpd.conf habe ich angefuegt:
Alias /aliasname /var/www/testarea/mein_verzeichnis
<Directory /var/www/testarea/mein_verzeichnis>
Options Indexes MultiViews ExecCGI
DirectoryIndex index.php
Order allow,deny
Allow from all
</Directory>
Das sieht korrekt aus.
Einen Fehler in der .htaccess kann ich ausschliessen
Nur mal so ganz nebenbei, weil du das weder bestätigt noch verneint hast: du hast natürlich eine Kopie deiner .htaccess auch in /var/www/testarea/mein_verzeichnis abgelegt? Da der Alias auf ein Verzeichnis _außerhalb_ verweist, muß das sein.
Grüße aus Berlin
Christoph S.
Hallo Christoph,
Das sieht korrekt aus.
Dachte ich mir auch so
Nur mal so ganz nebenbei, weil du das weder bestätigt noch verneint hast: du hast natürlich eine Kopie deiner .htaccess auch in /var/www/testarea/mein_verzeichnis abgelegt? Da der Alias auf ein Verzeichnis _außerhalb_ verweist, muß das sein.
Ja, habe ich. Nur, um es klar zu sagen, die Rede ist hier von /var/www/testarea/mein_verzeichnis/.htaccess, die im Gegensatz zu /var/www/html/.htaccess bei gleichem Inhalt keine Wirkung zeigt.
Mir ist aber etwas anderes entgangen. In der httpd.conf wird eine weitere Konfigurationsdatei included mit dem Inhalt
<VirtualHost *:80>
ServerName localhost.localdomain
ServerAlias *.localhost.localdomain
DocumentRoot /var/www/html
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
</VirtualHost>
Kannst Du damit vielleicht was anfangen? Ich wuesste zwar nicht, inwiefern das mit dem Problem zu tun hat, aber mal sehen, aber vielleicht siehst du das ja anders.
Neben dieser gibt es noch eine Anzahl includeter Konfigurationsdateien, die sind aber nur Aliases fuer den Zugriff auf verschiedene Applikationen.
Gruß,
Dieter
hallo Dieter,
um es klar zu sagen, die Rede ist hier von /var/www/testarea/mein_verzeichnis/.htaccess, die im Gegensatz zu /var/www/html/.htaccess bei gleichem Inhalt keine Wirkung zeigt.
Okok, man muß ja manchmal an ganz idiotische Fehler denken, die man _nie_ begehen würde ... ;-) Und wenn der Inhalt tatsächlich so aussieht wie du ihn gepostet hast, sehe ich keinen Grund, weshalb das nicht funktionieren sollte.
Woran man auch noch denken könnte, ist die Rechtevergabe. Wenn du beispielsweise als root deine .htaccess direkt in das andere Verzeichnis kopiert hast, kann es sein, daß sie eben root gehört - aber root ist kein Standard-Apachebenutzer. Schau mal nach, ob die .htaccess-Dateien in /var/www/html und /var/www/testarea/mein_verzeichnis demselben Benutzer und derselben Gruppe gehören, die in der httpd.conf eingetragen sind. Gegebenenfalls mit "chown" ändern, allerdings ist die Wahrscheinlichkeit, daß die Besitzverhältnisse eine Rolle spielen, eher gering.
Ich bemühe mich grade, das Problem irgendwie nachzuvollziehen, dabei gehts mir genau andersherum: ich habe alle "AccesFileName"-Anweisungen gestrichen bzw. auskommentiert, trotzdem funktionieren die vorhandenen .htaccess-Dateien noch - mit FreeBSD/Apache 2.2.0 und WinXP/Apache 2.0.55. Sie funktionieren sogar dann noch, wenn es keine Anweisung in der Konfugurationsdatei gibt, darauf zuzugreifen. Ich kriege sie nur mit "AllowOverride" deaktiviert. Da hab ich nun auch noch was zu grübeln und nachzulesen.
In der httpd.conf wird eine weitere Konfigurationsdatei included
[...]
Kannst Du damit vielleicht was anfangen?
Ja. Streiche das mal bitte oder kommentiere es aus. Du solltest, wenn du am Herumbasteln an deiner Serverkonfiguration bist, grundsätzlich so vorgehen, daß du erstmal _alles_ streichst oder auskommentierst und erst nach und nach die Anweisungen aktivierst, die du zu brauchen meinst.
Ich habe mir extra nochmal die Sourcen für deine Apache-Version gezogen, um nachzuschauen, was da in der "default"-Konfigurationsdatei vorgegeben werden sollte - falls dein RedHat nicht im *.rpm noch was andres festgelegt hat. Das ist ganz aufschlußreich, es wird tatsächlich ein ähnlicher virtueller Host vorformuliert, ist aber auskommetiert. Was du da hast, ist vermutlich per "default" mit genau diesen von dir zitierten Einstellungen vom *.rpm vorformuliert (distributionsspezifisch). Der Sinn ist der, daß der Admin _grundsätzlich_ mit virtuellen Hosts arbeiten soll, also auch "localhost" bereits ein virtueller Host ist. Eine ganze Reihe von Linux-Distributionen ist bei der Zusammenstellung der distributionsspezifischen Pakete so vorgegangen (SuSE seit Apache 2.0.48, die anderen seit Apache 2.0.50). Ein paar theoretsche Hinweise, die dir allerdings konkret nicht weiterhelfen werden, gibts in meinem Artikel.
Ich wuesste zwar nicht, inwiefern das mit dem Problem zu tun hat, aber mal sehen, aber vielleicht siehst du das ja anders.
Das sehe ich anders, ja. Vermutlich ist genau das der Grund für deine Probleme. Dieser virtuelle Host ist aktiv (und weil ich sowas vermutete, hatte ich vorhin gefragt, ob du virtuelle Hosts im Einsatz hast), und daher sind einige Vorgaben, die du bisher in der httpd.conf außerhalb des <virtHost>-Containers vorgenommen haben magst, höchstwahrscheinlich unwirksam. Um das aber sicher behaupten zu können müßte ich allerdings deine gesamte httpd.conf kennen.
Neben dieser gibt es noch eine Anzahl includeter Konfigurationsdateien, die sind aber nur Aliases fuer den Zugriff auf verschiedene Applikationen.
Zumindest in den Sourcen sind sie das nicht unbedingt. Kommentiere sie mal alle aus, und aktiviere sie danach Schritt für Schritt wieder. Das bedeutet zwar mehrere Server-Neustarts, aber dann weißt du wenigstens genau, welches eingebundene Konfigurationsschnipsel wofür zuständig ist.
Sehr hilfreich ist es auch, "LoadModule info_module modules/mod_info.so" und die zugehörigen Stellen in der httpd.conf zu aktivieren. Im Browser wird dir dann unter http://servername/server-info eine sehr detaillierte Übersicht angezeigt, welche Anweisungen tatsächlich aktiviert sind (in meinem Artikel gabs dazu in der Erstfassung mal einen kurzen Hinweis, das hab ich bei der aktuellen Fassung wieder gestrichen, es wird aber beim nächsten, im Frühjahr/Sommer nächsten Jahres geplanten Update wieder mit epischer Breite vorhanden sein).
Grüße aus Berlin
Christoph S.
Hallo Christoph,
Letzendlich ist mein Problem dank deiner Hinweise geloest, wenn auch anders, als du es vielleicht beabsichtigt hattest. An einer Stelle in deinem vorhergehenden Posting hast du davon gesprochen, dass du die ganze httpd.conf sehen muesstest, an anderer Stelle von AllowOverride.
Ich wollte eigentlich die httpd.conf fuer ein Posting vorbereiten, indem ich alles mit Sicherheit irrelevanten Bereiche wie Kommentare, Icons und all sowas entfernt habe. Als diese dann ploetzlich klitzeklein und uebersichtlich war, ist mir aufgefallen, was ich im etwas unwirtlichen vi vorher mehrfach uebersehen habe.
AllowOverride All war nur fuer <Directory "/var/www/html"> gesetzt, ansonsten stand es auf None....
Jetzt ist meine kleine Welt wieder in Ordnung, alles funktioniert, wie es soll.
Vielen Dank fuer Deine Zeit und Deine Hilfe!
Dieter
Hallo Dieter,
AllowOverride All war nur fuer <Directory "/var/www/html"> gesetzt, ansonsten stand es auf None....
sag ich doch :-)
Grüße aus Nürnberg
Tobias
Hallo Tobias,
Recht hast Du, ich habs einfach nicht geshen oder sagen wir mal, wahrhaben wollen ;-)
Gruß,
Dieter
hallo,
AllowOverride All war nur fuer <Directory "/var/www/html"> gesetzt, ansonsten stand es auf None....
Für "AllowOverride" liest du bitte bei Gelegenheit den Abschnitt Erlaubte Anweisungen... nach. Der ist in SELFHTML 8.1.1 neu, in der 8.1 ist das sachlich nicht ganz korrekt.
Grüße aus Berlin
Christoph S.
Hallo Dieter,
Ich habe jetzt ein Alias ausserhalb vom Root angelegt, das ich auch ueber den Browser ansprechen kann. Die .htaccess-Datei bleibt jedoch ohne Wirkung,
Hast du für dieses Verzeichnis auch AllowOverride entsprechend gesetzt? Standardmäßg steht das afaik auf none, womit .htaccess-Dateien natürlich ignoriert werden.
Grüße aus Nürnberg
Tobias