Apache Fragen, .htaccess, Redirect Umleitungsschleife?
hawkmaster
- webserver
Hallo zusammen,
Mir sind ein paar Einstellungen für den Apache 2.2 (unter Windows XP) nicht klar.
1. Man kann ja separate Conf Dateien von der httpd.conf includieren.
Include conf/extra/httpd-default.conf
Ein Trainer hat folgendes behauptet.
Der Apache würde die "httpd-default.conf" IMMER includieren und die Standardwerte auslesen auch wenn diese in der httpd.conf nicht eingebunden wird, also;
Er meinte immer wenn Konfig Dateien den Zusatz "-default" enthalten, werden sie gelesen. Erst wenn man in der "httpd-default.conf" Einstellungen verändert, müßte man sie in der httpd.conf includieren.
Mir kommt das etwas seltsam vor bzw. kann es fast nicht glauben.
Kann mir das jemand bestätigen oder nähere Infos geben?
2. Werden .htaccess Dateien vom Apache immer verstanden oder ausgewertet?
Es gibt ja die Anweisung:
AccessFileName .htaccess
Bei mir werden aber die .htaccess Dateien erkannt und ausgewertet wenn ich die Anweisung auskommentiere wie;
3. Redirect
In einem Buch fand ich ein Besipiel wie man eine Seite kurzfristig wegen Wartungsarbeiten sperren kann bzw. das eine Wartungsseite erscheint.
Redirect temp / http://localhost/wartung.html
Wenn ich dies versuche und z.b.
http://localhost eingebe, bringt mit Firefox ständig einen Fehler
"Umleitungsschleife
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann."
Warum kommt diese Meldung?
vielen Dank und viele Grüße
hawk
Guten Tag,
- Man kann ja separate Conf Dateien von der httpd.conf includieren.
Include conf/extra/httpd-default.confEin Trainer hat folgendes behauptet.
Der Apache würde die "httpd-default.conf" IMMER includieren und die
Standardwerte auslesen auch wenn diese in der httpd.conf nicht
eingebunden wird, also;Include conf/extra/httpd-default.conf
Er meinte immer wenn Konfig Dateien den Zusatz "-default" enthalten,
werden sie gelesen. Erst wenn man in der "httpd-default.conf"
Einstellungen verändert, müßte man sie in der httpd.conf includieren.
Das konnte ich nicht nachvollziehen, weder im Manual noch im Test.
- Werden .htaccess Dateien vom Apache immer verstanden oder ausgewertet?
Es gibt ja die Anweisung:AccessFileName .htaccess
Bei mir werden aber die .htaccess Dateien erkannt und ausgewertet wenn ich die Anweisung auskommentiere wie;
AccessFileName .htaccess
Das ergibt sich daraus, dass der Defaultwert AccessFileNames .htaccess ist. Wird kein expliziter Wert gesetzt, gilt der Defaultwert.
- Redirect
In einem Buch fand ich ein Besipiel wie man eine Seite kurzfristig wegen Wartungsarbeiten sperren kann bzw. das eine Wartungsseite erscheint.Redirect temp / http://localhost/wartung.html
Wenn ich dies versuche und z.b.
http://localhost eingebe, bringt mit Firefox ständig einen Fehler"Umleitungsschleife
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann."
Warum kommt diese Meldung?
Wie sieht deine restliche Konfiguration aus?
Gruß
Christoph Jeschke
Hallo Christoph,
vielen Dank für deine Antworten und Hilfe.
Das konnte ich nicht nachvollziehen, weder im Manual noch im Test.
Dann bin ich froh. Ich nämlich auch nicht. Ich kann mir nicht vorstellen das der Apache alle Konfigurationsdateien nach dem String "-default" parst.
Ich habe auch in keinem Manual einen Hinweis darauf gefunden.
Das ergibt sich daraus, dass der Defaultwert AccessFileNames .htaccess ist. Wird kein expliziter Wert gesetzt, gilt der Defaultwert.
Das heisst also das es quasi in den Apache "eingebaut" ist das Default mäßig immer .htaccess genommen wird?
Ist das dann eigentlich auch bei anderen Dingen so, wie etwa:
MaxKeepAliveRequests 100
Timeout 300
UseCanonicalName Off
usw. ?
Wie sieht deine restliche Konfiguration aus?
Eigentlich ist es eine XAMPP Standardinstallation.
DocumentRoot "C:/Programme/WebSrv/htdocs"
<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
Redirect temp / http://localhost/wartung.html
<Directory "C:/Programme/WebSrv/htdocs">
MultiViews
Options -Indexes Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Oder meinst du was besonderes?
vielen Dank und viele Grüße
hawk
Yerf!
Dann bin ich froh. Ich nämlich auch nicht. Ich kann mir nicht vorstellen das der Apache alle Konfigurationsdateien nach dem String "-default" parst.
Ich habe auch in keinem Manual einen Hinweis darauf gefunden.
Ich denke mal, dass der Eindruck dadurch entstanden ist, weil die Einstellungen der "-default" Configs mit denen übereinstimmen, die gelten, wenn keine Config geparst wird.
Dies dürfte dann wohl auch deine 2. Frage klären, oder?
Gruß,
Harlequin
Hallo Harlequin,
Danke auch dir für die Hilfe.
Ich denke mal, dass der Eindruck dadurch entstanden ist, weil die Einstellungen der "-default" Configs mit denen übereinstimmen, die gelten, wenn keine Config geparst wird.
Dies dürfte dann wohl auch deine 2. Frage klären, oder?
Ja ich glaube auch so langsam das dies so gemeint war das immer die Default Werte genommen werden und nur wenn sie davon abweichen man die "httpd-default.conf" includieren sollte.
vielen Dank und viele Grüße
hawk
Guten Tag,
Das heisst also das es quasi in den Apache "eingebaut" ist das Default
mäßig immer .htaccess genommen wird?
Genau.
Ist das dann eigentlich auch bei anderen Dingen so, wie etwa:
MaxKeepAliveRequests 100
Timeout 300
UseCanonicalName Off
Schau ins Manual. Dort wird ein eventuell vorhandener Default-Wert angegeben.
Gruß
Christoph Jeschke
Hallo nochmals,
nochmals wegen dem Redirect Problem bzw. der Umleitungschleife.
Kann es sein das es einfach so garnicht gehen kann?
Redirect temp / http://localhost/wartung.html
Ich leite dann ja alle Seiten von htdocs wiederum auf den eigenen localhost um.
Kann es sein, das ein Redirect immer nur auf fremde URLs geht?
vielen Dank und viele Grüße
hawk
Guten Tag,
Kann es sein das es einfach so garnicht gehen kann?
Redirect temp / http://localhost/wartung.html
Doch, die Syntax ist gültig.
Ich leite dann ja alle Seiten von htdocs wiederum auf den eigenen localhost
um.
Kann es sein, das ein Redirect immer nur auf fremde URLs geht?
Nein. Das ist problemlos möglich. Du kannst sogar eine Endlosschleife produzieren, in dem du auf die gleiche Ressource weiterleitest.
In deinem Falle leitet der Apache immer dann auf /wartung.html weiter, wenn irgendeine Ressource unter / aufgerufen wird. Du solltest als RediretMatch verwenden, wenn du nur / weiterleiten willst, bzw. mod_rewrite, wenn du alle außer /wartung.html auf /wartung.html weiterleiten möchtest.
Gruß
Christoph Jeschke
Hallo Christoph,
In deinem Falle leitet der Apache immer dann auf /wartung.html weiter, wenn irgendeine Ressource unter / aufgerufen wird. Du solltest als RediretMatch verwenden, wenn du nur / weiterleiten willst, bzw. mod_rewrite, wenn du alle außer /wartung.html auf /wartung.html weiterleiten möchtest.
Ok, aber warum klappt es dann mit
Redirect temp / http://localhost/wartung.html
nicht?
Wenn ich im Browser
http://localhost/
eingebe, kommt sofort die Meldung "Weiterleitungsschleife" und die URL wird.
http://localhost/wartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.htmlwartung.html
Und die eigentliche wartung.html wird nicht angezeigt.
vielen Dank und viele Grüße
hawk
Guten Tag,
Ok, aber warum klappt es dann mit
Redirect temp / http://localhost/wartung.html
nicht?
Weil ein Match auf / eben auch auf /wartung.html passt. Der Client wird immer wieder weitergeleitet.
Gruß
Christoph Jeschke
Hallo Christoph,
Weil ein Match auf / eben auch auf /wartung.html passt. Der Client wird immer wieder weitergeleitet.
das heisst also das es bei diesem Beispiel mit dem Wartungshinweis so lokal auf dem gleichen Server garnicht geht bzw. keinen Sinn mit Redirect macht?
Wäre hier das "mod_rewrite" angebrachter?
vielen Dank und viele Grüße
hawk
Guten Tag,
das heisst also das es bei diesem Beispiel mit dem Wartungshinweis so lokal auf
dem gleichen Server garnicht geht bzw. keinen Sinn mit Redirect macht?
Es funktioniert, denn die Weiterleitung ist gültig, aber offensichtlich sinnlos.
Wäre hier das "mod_rewrite" angebrachter?
Genau. Du lässt den Server nur dann weiterleiten, wenn nicht /wartung.html aufgerufen wird. So vermeidest du Endlosschleifen.
Gruß
Christoph Jeschke
das heisst also das es bei diesem Beispiel mit dem Wartungshinweis so lokal auf dem gleichen Server garnicht geht bzw. keinen Sinn mit Redirect macht?
Wäre hier das "mod_rewrite" angebrachter?
Für solch simple Sachen genügt auch RedirectMatch:
RedirectMatch 302 ^/(?!wartung.htm) http://example.com/wartung.htm
Redirect wäre in diesem Beispiel übrigens auch ohne Endlosschleife nicht ganz richtig, bei einer Anfrage von http://example.com/foo/bar dürfte bei
Redirect / http://test.com/xy.htm
dann nämlich daraus http://test.com/xy.htmfoo/bar werden – was sicher nicht dem gewünschten Ergebnis entspricht.
Options -Indexes Includes ExecCGI
+/- und nicht- +/- Optionen sollten nie gemischt werden. Entweder besteht deine Zeile nur aus +/- Optionen oder eben nur aus solchen ohne +/-.