
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_alias
den 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.