Suchmaschinen – vor allem Google – können sehr hartnäckig sein. Gerade was alte Seiten oder Forumsbeiträge angeht, möchte man diese vielleicht aus Suchmaschinen ausnehmen.

Für Ressourcen, die nicht mehr verfügbar sind, gibt es ab HTTP 1.1 den Status Code 410 (Gone). Mit diesem Wissen gewappnet läßt sich eine Suchmaschine gut steuern.

Im Beispiel handelt es sich um ein Forum, in dem unerwünschte Beiträge nicht gelöscht werden sollen, sondern in einen Bereich verschoben werden, der öffentlich nicht verfügbar ist. (Das Forum ist PHPBB3 – hier kann leider nicht zwischen „eigentlich gelöscht“ und in einem Beitrag nur für bestimmte Benutzer unterschieden werden.)

Kennt man die alte URL des Beitrags, so ist dieser zwar nicht mehr verfügbar, aber es erscheint eine „bitte melden Sie sich an“ Seite. Nicht gerade das, was man sich wünscht um diesen Beitrag schnell aus dem Google Index verschwinden zu lassen.

Also kommt nun die Apache htaccess hinzu – leider geben sich Suchmaschinen gerne als HTTP 1.0 Browser aus, „echte“ HTTP 1.0 Browser verstehen den HTTP Statuscode 410 jedoch nicht. Also kommt noch ein htaccess Trick hinzu: Ein HTTP 1.1 Browser nur kennt den „Host“ Header, damit läßt sich eine hinreichende Differenzierung erreichen.

Zu guter letzt möchte man noch den Administratoren ermöglich in dem Bereich Beiträge zu sehen – hier gehe ich einfach mal davon aus, dass sich keine vernünftige Suchmaschine als „Firefox“ User ausgeben würde, und die Administratoren seinerseits Firefox verwenden.

Zusammengebaut sieht das dann so aus:

#exclude archive pages from search engines, if http 1.1 capable (using host header check)
RewriteCond %{HTTP_HOST} .
#not for humans
RewriteCond %{HTTP_USER_AGENT} !Firefox [NC]
#else: gone
RewriteRule ^archiv/ - [G,L]