Une situation très étrange est apparue.
Voici mon .htaccess:
RewriteEngine On
RewriteRule (.*)\.ready / [R=410,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
La ligne RewriteRule (.*)\.ready / [R=410,L]
n'est exécutée que lorsque je:
Un exemple d'URL nécessitant un code 410: https://todaycycling.com/actualites-cyclisme/5t0e232502yg9t9/0002ap3_0198jqi/3613qh5786/.ready
Essayez de réinitialiser le document d'erreur par défaut au début de votre fichier .htaccess
:
ErrorDocument 410 default
Si vous avez un document d'erreur 410 personnalisé défini ailleurs dans la configuration de votre serveur, il pourrait être routé par WordPress. (J'ai rencontré des hôtes partagés qui (pour une raison quelconque) définissent un ErrorDocument "par défaut" personnalisé dans la configuration du serveur. Si ce document d'erreur n'existe pas, il finira par être réécrit en index.php
et traité par WordPress.)
Incidemment, lorsque vous utilisez un code de statut autre que 3xx dans RewriteRule
, vous devez simplement utiliser un trait d'union (-
) dans la substitution RewriteRule
. (C'est ignoré de toute façon.) Et comme @janh l'a mentionné dans les commentaires, "R=410
implique le L
, mais pour plus de clarté, j'utiliserais simplement G
". Donc, ceci est mieux écrit comme:
RewriteRule \.ready - [G]
Faire correspondre ".ready" n'importe où dans le chemin d'URL. Le préfixe (.*)
est superflu et il est inutile de capturer le motif. Si cela ne devrait se produire qu'à la fin du chemin d'URL, incluez une ancre de fin de chaîne ($
). par exemple. \.ready$