Je parie qu'il y a au moins un solution triviale à ce problème, mais je n'ai pas encore trouvé de solution.
En un mot, ce que je cherche à faire, c’est informer les moteurs de recherche qu’il n’ya plus de fichiers . Html sur le serveur (via un statut 410 Gone) sauf pour le fichier de vérification de la console de recherche Google ( googlerandomstringofchars.html ).
Voici ce que j'ai ajouté au fichier .htaccess racine, en vain
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^googlerandomstringofchars.html$
RewriteRule ^.*\.html$ - [R=410]
J'essayais essentiellement d'exclure googlerandomstringofchars.html , tout en renvoyant le statut 410 pour tout autre fichier . Html.
Le site Web est géré par WordPress, mais je me suis assuré d'ajouter les directives my au tout début du fichier .htaccess, afin qu'elles soient évaluées avant que WP n'ait aucune chance d'interférer et de générer des sorties. sa page de fantaisie 404-Not Found.
Cela ne fonctionne pas comme je le pensais. Pour une raison quelconque, une tentative d'accès à un fichier .html inexistant, à un fichier .html existant ou au fichier .html de Google entraîne le renvoi de WordPress à sa page "fantaisie" 404.
Mais pourquoi ? Où est la faille dans mes directives?
Utilisation:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/googlerandomstringofchars.html$
RewriteRule ^.*\.html$ - [R=410,L]
Selon http://httpd.Apache.org/docs/current/mod/mod_rewrite.htmlREQUEST_FILENAME
est le complet nom local du fichier. Donc, ce serait quelque chose comme /var/www/html/example.com/googlerandomstringofchars.html
Vous devriez plutôt utiliser REQUEST_URI
qui est le chemin relatif sur le serveur Web commençant par une barre oblique. J'ai tous les deux changé votre condition en REQUEST_URI
et ajouté une barre oblique.
Vous avez également besoin d'un L
sur votre R=410
pour qu'il s'agisse de la toute dernière règle de réécriture utilisée. Sinon, d'autres règles de réécriture (telles que celles de WordPress) seront également exécutées et pourront le remplacer. J'ai ajouté ceci L
dans votre règle.
Vous devez vous assurer que ce bloc se situe près du haut du fichier . Htaccess . Cela doit passer avant les autres blocs de réécriture, tels que ceux pour WordPress.