So stellen Sie von Apache eine 410-Fehlermeldung statt einer 404-Fehlermeldung bereit

So stellen Sie von Apache eine 410-Fehlermeldung statt einer 404-Fehlermeldung bereit

Auf unserer Site neigen wir dazu, häufig Seiten zu entfernen, deren Inhalt abgelaufen ist, und wir möchten für Anfragen an Seiten (physische Dateien), die auf unserem Server nicht vorhanden sind (die gesamte Site besteht aus statischen Dateien), den HTTP-Status 410 statt 404 zurückgeben.

Wir haben es versucht

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ - [G,L]

ausdieser Blog-Beitragaber das bringt unsere gesamte Site zum Absturz, da bei jeder Anfrage eine 410-Fehlermeldung ausgegeben wird.

Wir verwenden Apache 2.2.3

Antwort1

    Redirect gone /path/to/resource

So geht es richtig. Wenn dadurch Fehler auftreten, stellen Sie sicher, dass Sie mod_aliasden Server geladen haben.

Antwort2

Ich finde, Chris' Antwort ist ziemlich gut. Wenn Sie kein PHP-Skript verwenden möchten, könnte es so aussehen:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$                - [G,L]

Vergessen Sie nicht, dass diemod_umschreibenSeite hat auch einen Begleitermod_rewrite Wiki.

Antwort3

Erstellen Sie eine errorpage.php (oder eine andere Skriptsprache) und lassen Sie diese Datei einen HTTP-Statusheader mit dem Inhalt „410 Gone“ zurückgeben. Fügen Sie Ihrer Apache-Konfiguration Folgendes hinzu. Es besagt im Wesentlichen: Wenn die angeforderte URL weder eine Datei noch ein Verzeichnis ist (d. h. die Datei existiert nicht), wird das Dokument errorpage.php geladen.

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /errorpage.php [L]

Die Datei errorpage.php könnte beispielsweise so einfach sein:

<?php header($_SERVER['SERVER_PROTOCOL'].' 410 Gone');

Sie könnten errorpage.php auch so einrichten, dass es eine Liste gelöschter Seiten enthält (oder diese auf andere Weise verfolgt), sodass je nachdem, ob die Ressource zuvor vorhanden war oder nicht, der HTTP-Status 404 oder 410 ordnungsgemäß zurückgegeben werden könnte.

verwandte Informationen