web-dev-qa-db-fra.com

Certains messages renvoyant 404 au lieu d'afficher

J'ai un problème avec mon installation Wordpress. Tout à coup, certains de mes messages rapportent 404 erreurs lorsque j'essaie d'accéder à leur lien permanent. Mes noms de poste sont tous des chiffres et cela a commencé lorsque mes messages numérotés dépassaient 1000.

Ainsi, par exemple, cette publication fonctionne correctement: http://kidlolly.com/post/999/

Mais celui-ci retourne un 404: http://kidlolly.com/post/1000/

Une idée de ce qui pourrait être la racine du problème? Je soupçonne peut-être mon fichier .htaccess mais j'avoue que je ne suis pas très averti sur .htaccess, je ne suis donc pas tout à fait sûr de ce qu'il faut rechercher. J'exécute quelques plugins "de sécurité" qui affectent le .htaccess mais comme ce n'est pas un problème pour les posts 1-999, je ne sais pas trop quoi chercher.

Voici où je pense que le problème pourrait se trouver dans le fichier .htaccess (si tel est bien le cas), toute personne capable de m'aider à l'interpréter?

    RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(bash|git|hg|log|svn|swp|cvs) [NC,OR]
    RewriteCond %{QUERY_STRING} etc/passwd [NC,OR]
    RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
    RewriteCond %{QUERY_STRING} ftp\:  [NC,OR]
    RewriteCond %{QUERY_STRING} http\:  [NC,OR]
    RewriteCond %{QUERY_STRING} https\:  [NC,OR]
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
    RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(request|select|concat|insert|union|declare).* [NC]
    RewriteCond %{QUERY_STRING} !^loggedout=true
    RewriteCond %{QUERY_STRING} !^action=rp
    RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
    RewriteCond %{HTTP_REFERER} !^http://maps\.googleapis\.com(.*)$
    RewriteRule ^(.*)$ - [F,L]

Merci d'avance!

2
zarprey

Comme je l'ai mentionné dans mon commentaire, la règle de réécriture des dates consiste à ramasser votre message permalien et à essayer de charger une archive d'année au lieu de votre message unique. Comme il semble que vous n'utilisiez pas d'URL de date sur votre site, vous pouvez modifier la structure de la date pour éviter les conflits. Ajoutez ceci au fichier functions.php de votre thème, puis visitez la page Settings > Permalinks dans Admin pour supprimer les règles de réécriture:

function wpa82820_date_structure(){
    global $wp_rewrite;
    $wp_rewrite->date_structure = 'date/%year%/%monthnum%/%day%';
}
add_action( 'init', 'wpa82820_date_structure' );

Cela modifie les URL de date de /2013/01/23/ à /date/2013/01/23/ afin qu'elles ne soient plus en conflit avec des permaliens à publication unique à 4 chiffres.

4
Milo