Dies kann auch passieren, wenn Sie eine .htaccessDatei im Dokumentstamm haben und diese Datei eine enthält RewriteRule, wie es bei hübschen CMS-URLs üblich ist.
Die Erklärung für dieses Verhalten lautet wie folgt. Die <Location>Anweisungen handeln zuerst, aber der Handler wird zu diesem Zeitpunkt nicht aufgerufen. Dann RewriteRulesetzt das einen Handler, zB um ein PHP-Skript auszuführen, SetHandlerhat also am Ende keine Auswirkung.
Wenn dies die Ursache ist, suchen Sie die Ursache RewriteRule(*) und fügen Sie sie hinzu:
RewriteCond %{REQUEST_URI} !=/server-status
Dies schließt den server-statusURI RewriteRuleauf die gleiche Weise aus, wie vorhandene statische Dateien ausgeschlossen werden können. Natürlich /server-statusmuss das Location, was Sie anstelle von verwenden, genau mit dem gewählten übereinstimmen , was in der Frage stattdessen steht /status. (Getestet auf Apache 2.2.22 und Apache 2.4)
Nachtrag: Beachten Sie auch, dass Sie einen 403 erhalten können, der versucht, das zu lesen, server-statuswenn das DocumentRootvom Apache-Prozess überhaupt nicht lesbar ist, da der Server-Status-Handler keine Chance hat, zu arbeiten.
Anhang 2: Wenn die .htaccessfür die Apache-Standardwebsite häufig überschrieben wird und die /server-statusURL erforderlich ist, damit beispielsweise Munin funktioniert, ist das Erstellen einer <VirtualHost 127.0.0.1:80>Zeilengruppe mit dem Serverstatus-Handler möglicherweise administrativ am einfachsten.
Anhang 3 (*): Das RewriteRuleProblem verursacht möglicherweise alles, was mit der Zeichenfolge übereinstimmt /server-status. Dies kann erkennbar sein, weil der erste Parameter mit etwas übereinstimmt, z. B. dort, RewriteRule .wo .er mit einem beliebigen Zeichen übereinstimmt ^(.*), oder auf andere Weise den URI abfängt, z .*\bstatus$. Sie können es auch identifizieren, weil es vorhandene Dateien mit absichtlich ausschließt !-f.
Wenn beispielsweise WordPress die Hauptseite ist und Sie /server-statusdarauf erscheinen möchten und aus irgendeinem Grund Addendum 2 oben nicht anwendbar ist, möchten Sie möglicherweise eine zusätzliche Site RewriteCondwie folgt einfügen :
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/server-status
RewriteRule . /index.php [L]
Es schadet jedoch wahrscheinlich vor keinem RewriteRule.