Sebastian Salzgeber: Apache mod_rewrite → HTTP-ErrorDocuments intern umleiten

Beitrag lesen

Hallo Sven

Ah, tatsache. Ich habe mir Lösing quasi selbst gegeben als ich schrieb:

ErrorDocument 400 /errors/badrequest.html

da ich eigentlich in wirklichkeit immer schrieb:

ErrorDocument 400 http://www.example.com/errors/badrequest.html

Und da macht er eben den kompletten redirect. Ich dachte ich könnte mir *.com sparen und habe damit die Lösung schon vor meinen Augen gehabt :D

Danke für dein drauf tippen.

Grüße
Sebastian S.

Moin!

Ich schreibe gerade an einer .htaccess und würde gerne wissen, ob es möglich ist, wenn mir Apache einen Status 400,401,403,404 oder 500 zurückgibt, diesen nicht extern sondern lediglich intern umzuleiten; Die URL also bleibt und lediglich intern das gewünschte Dokument geholen wird.

Bisher nutze ich immer etwas wie das hier:

ErrorDocument 400 /errors/badrequest.html
ErrorDocument 403 /errors/forbid.html

Doch weist dies (soweit ich das sehe) auch den Browser an, die URL zu ändern. Das möchte ich nicht.

Nein, das ist falsch. Wenn du das wie oben anwendest, bleibt die aufgerufene URL im Browser bestehen, diese Fehlerseiten (die auch Skripte sein können) werden unter dieser fehlerhaften URL aufgerufen und können die URL auf verwenden und auswerten, um irgendwelche Aktionen zu starten.

Hätte dir aber eigentlich auch auffallen müssen - wobei 400 und 403 keine wirklich alltäglichen Error-Codes sind, aber bei 404 wäre es offensichtlich.

Kann mir jemand sagen ob ich es vielelicht mittels mod_rewrite und einer Regel vielleicht irgendwie abfangen kann und bloss intern das passende Dokument anfordern kann? Hilft REDIRECT_STATUS? Wie sähe sowas aus?

Das ist also obsolet.

  • Sven Rautenberg