Ich hab seit dem Umzug auf Apache/FPM von Apache/MPM ein seltsames Verhalten mit Error Seiten.
Beispiel:
.htaccess
- Code: Select all
RewriteEngine On
RewriteRule ^([A-Za-z0-9-_]+)$ index.php?p=$1 [QSA,NC,L]
index.php
- Code: Select all
if ($_GET['p'] == 'test')
{
echo 'OK, this is a test';
}
else
{
header('HTTP/1.0 404');
echo 'Sorry, we have an error';
}
Die Webseite kann nun wie folgt aufgerufen werden:
http://example.com/test oder http://example.com/index.php?p=test
In beiden Fällen kommt als Ausgabe: OK, this is a test
Ruft man http://example.com/irgendwas auf, erscheint 'Sorry, we have an error' und die Seite hat einen 404 Header.
Neu ist aber folgendes:
Ruft man http://example.com/index.php?p=irgendwas auf, erscheint jetzt die globale Apache 404 Seite oder Meldung, je nachdem wie es halt bei Apache global eingestellt ist.
Die Meldung 'Sorry, we have an error' vom PHP Skript wird nicht ausgegeben. Das ist jedoch nicht das gewünschte Verhalten und hat mit MPM noch funktioniert.
Grundsätzlich kann man sagen, dass, falls die Seite über eine RewriteRule aufgerufen wird, alles ok ist.
Wird eine Seite direkt aufgerufen, erscheint bei einem PHP Header header('HTTP/1.0 nnn') nicht mehr die Ausgabe des PHP Skriptes sondern die globale Fehlerseite von Apache.
Ist das bekannt? Oder hab ich da was falsch eingestellt?