web-dev-qa-db-fra.com

Comment puis-je rediriger tout sauf l'index en tant que 410?

Notre site a fermé et nous devons donner une redirection 410 aux utilisateurs. Nous avons un petit site de remplacement d'une page configuré dans le même domaine et une page d'erreur 410 personnalisée. Nous souhaiterions que toutes les pages consultées reçoivent une réponse 410 et soient redirigées vers la page d'erreur, à l'exception de la page d'accueil qui devrait pointer vers le nouveau index.html.

Voici ce que dans le . Htaccess :

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.html$ index.html [L,R=410]

Cela fonctionne, sauf pour une chose: Si je tape le nom de domaine, je reçois la page 41.

Avec www.example.com/index.html je vois la page d'index comme je le devrais, mais juste www.example.com obtient 410. Comment puis-je résoudre ce problème?

2
Mikko Saari

Si je suis ce que vous essayez de faire, je pense que cela fonctionnerait.

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

Si la ressource n'existe pas (ce n'est ni un fichier ni un répertoire), envoyez le 410.

2
matthew

Créez une page appelée maintenance.html (ou l’extension de fichier nécessaire pour la langue de choix du serveur), puis utilisez le code suivant:

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintenance.html [R=410,L]
</IfModule>

Ceci affichera toujours maintenance.html quelle que soit la page demandée dans leur navigateur.

1
John Conde