Apache-Konfiguration: Geben Sie 404 für einen einzelnen <Standort> zurück

9

Ist es möglich, dass Apache mithilfe des Location-Tags automatisch eine 404-Seite für eine einzelne URL zurückgibt?

<Location "/some/url">
    # ???
</Location>

Lösungen ohne mod_rewrite oder andere Module bevorzugt.

AndiDog
quelle

Antworten:

14

Die einzige Lösung "ohne Module" besteht darin, dass die Ressource nicht vorhanden ist. Wenn der Speicherort nicht vorhanden ist, gibt Apache einen 404 zurück.

Andernfalls müssen Sie mod_alias oder mod_rewrite verwenden. mod_alias ist die einfachere und effizientere Lösung:

Redirect 404 /your/url/path

Wenn Sie dies in Ihrem vhost verwenden, müssen Sie es nicht in einen Standortblock einfügen.

Sie können die RedirectMatchDirektive auch verwenden, wenn Sie die folgenden URLs nicht abgleichen möchten /your/url/path:

RedirectMatch 404 ^/your/url/path$

Dies und mehr können Sie in der Dokumentation zu mod_alias nachlesen

Hobodave
quelle
Gute Idee, aber leider wird dies auch 404 für alles zurückgeben, was mit '/ your / url / path / *' übereinstimmt, was für mich ein Problem ist.
AndiDog
1
@Andi: Sie sollten in Ihren Fragen genauer sein.
Hobodave
Entschuldigung;) Die RedirectMatchLösung funktioniert wie ein Zauber.
AndiDog
1

Anscheinend können Sie dafür ein verwenden RewriteRule(stellen Sie sicher, dass Ihre RewriteEngine aktiviert ist):

RewriteRule ^/forbidden_ /nonexistent [L]

Haben Sie diese Informationen von " 404 für bestimmte URL zurückgeben? " In den Archiven der Apache-Mailingliste erhalten.

Randolf Richardson
quelle
Nun, ich hätte gerne eine generische Lösung ohne Umschreiben. Ich kenne die mod_rewrite-Lösung bereits.
AndiDog
Die Leute sind es gewohnt, das zu verwenden, mod_rewritewofür es nie gedacht war. Ihre Lösung funktioniert nicht, wenn die Website eine FallbackResourceRichtlinie verwendet. Redirect 404 /pathwird jedoch.
AnrDaemon