web-dev-qa-db-fra.com

Erreurs 404 intermittentes, règles de réécriture et BBPress

J'essaie de déboguer un problème intermittent 404 pouvant être lié à BBPress. J’ai lu plusieurs autres rapports sur les 404 et BBPress intermittents, mais aucun d’entre eux ne s’applique exactement à ma situation. Je pose donc une nouvelle question.

La page principale de mon site Web se chargera par intermittence d'un 404. Le problème d'accès intermittent semble durer entre 10 secondes et 3 minutes à la fois. Lorsque cela se produit, toutes les personnes qui tentent d’accéder au site ne sont pas au rendez-vous (confirmé au téléphone avec l’assistance technique du service d’hébergement). Les autres pages du site semblent se charger correctement pendant cette fenêtre temporelle. Frapper rafraîchir finira par recharger correctement la page.

J'utilise le moniteur de requêtes pour examiner les règles de réécriture. Voici les résultats lorsque le chargement de la page est incorrect:

Request account-2/conscious-business-design-dashboard
Matched Rule    [^/]+/([^/]+)/?$
Matched Query   attachment=conscious-business-design-dashboard
Query String    attachment=conscious-business-design-dashboard
Query Vars  attachment  conscious-business-design-dashboard
comments_per_page   50
name    conscious-business-design-dashboard
order   DESC
posts_per_page  10
update_post_meta_cache  1
update_post_term_cache  1

Voici les résultats lorsque la page se charge correctement:

Request account-2/conscious-business-design-dashboard
Matched Rule    (.?.+?)(?:/([0-9]+))?/?$
Matched Query   pagename=account-2%2Fconscious-business-design-dashboard
&page=
Query String    pagename=account-2%2Fconscious-business-design-dashboard
Query Vars  comments_per_page   50
name    conscious-business-design-dashboard
order   DESC
pagename    conscious-business-design-dashboard
posts_per_page  10
update_post_meta_cache  1
update_post_term_cache  1
Queried Object  
Single Page: #225 (WP_Post)

Voici la requête la plus pertinente exécutée au cours de la 404:

SELECT wp_posts.*
FROM wp_posts 
WHERE 1=1 
AND wp_posts.post_name = 'conscious-business-design-dashboard'
AND wp_posts.post_type = 'attachment' 
ORDER BY wp_posts.post_date DESC 

Voici la requête exécutée lorsque la page est chargée avec succès:

SELECT wp_posts.*
FROM wp_posts 
WHERE 1=1 
AND (wp_posts.ID = '225')
AND wp_posts.post_type = 'page' 
ORDER BY wp_posts.post_date DESC 

Lorsque je regarde le code BBPress, je peux identifier les règles de réécriture ici:

// Rewrite rule matches used repeatedly below
    $root_rule    = '/([^/]+)/?$';
    $feed_rule    = '/([^/]+)/' . $feed_slug  . '/?$';
    $edit_rule    = '/([^/]+)/' . $edit_slug  . '/?$';
    $paged_rule   = '/([^/]+)/' . $paged_slug . '/?([0-9]{1,})/?$';

Cependant, toutes les limaces sont correctement définies dans la base de données et je ne peux pas comprendre comment elles pourraient être corrompues. Je ne trouve pas la règle de réécriture exacte répertoriée dans les résultats du moniteur de requêtes, ni dans le code principal, ni dans le code du plug-in.

Information additionnelle:

  • le site utilise SSL et de jolis permaliens sont activés.
  • Je n'ai pas été en mesure de répliquer le problème sur un serveur de test appartenant à un autre service d'hébergement, avec ou sans SSL activé. Le serveur de transfert sur l'hôte principal n'affiche pas non plus les 404. Le serveur de test est un SMV, mais exécute également suffisamment de sites pour effectuer une charge complète approximative. La charge sur le serveur principal directement est faible (plusieurs dizaines d'utilisateurs simultanément), mais le site principal est un hébergement partagé.
  • La surveillance d'upimerobot indique précisément trois heures d'indisponibilité deux fois au cours des dernières 24 heures, mais les journaux d'accès n'indiquent pas les 5 minutes d'accès attendues pour uptimerobot. Je ne suis donc pas sûr de la précision de ces chiffres. (J'essaie d'éliminer la possibilité de surcharge du processeur , car les 404 semblent être à la fois transitoires et liés à l'heure dans tous les utilisateurs. tout le monde, puis tout à coup brièvement pour tout le monde.)
  • Le site principal est un site d'adhésion et est en direct, donc "désactiver tous les plugins" n'est pas vraiment une option (nous abandonnerions le forum en premier) - de plus, avec les plugins désactivés, nous ne pourrions pas répliquer la charge. pour forcer le 404 à se reproduire. Les règles d'adhésion (MemberPress) reposent actuellement sur de jolis permaliens. Les plugins d'adhésion sont MemberPress et LearnDash
  • Le site utilise également BuddyPress, dont certaines recherches que j'ai effectuées pourraient également être impliquées. Il semble que dans certains cas, visiter des pages dans un ordre spécifique puisse déclencher une règle 404 de réécriture de BuddyPress , mais je suis relativement certain que dans mon cas, le problème est résolu. ne dépend pas de l'ordre des pages de visites. (J'ai les journaux de référent de 404 Error Monitor.)
  • J'ai installé les plugins Moniteur de requêtes (fournissant les données de cette question) et le Moniteur d'erreurs 404 (qui répertorie les pages autres que la page d'accueil du site indiquant 404, mais le journal d'accès ne montre que les 404 sur la page principale). Je n'ai pas installé la barre de débogage car leur forum de support présente une incompatibilité avec les versions actuelles de WP.
  • Je ne suis pas sûr à 100% si le problème se limite à la page principale du site. Les journaux d'accès disent oui. Le moniteur d'erreurs 404 affiche une longue liste d'autres pages rencontrant 404 pages. Je pense Je l'ai vu sur d'autres pages, mais je ne peux pas le jurer. Je peux vérifier que, au moment exact où la page principale était en panne pour moi et pour le support technique d'hébergement, j'ai pu accéder à d'autres pages du site.
  • La page principale ne contient pas de fonctionnalités BuddyPress ou BBPress. Il contient une vidéo Vimeo intégrée, quelques boutons, du texte brut, des images et une série de règles d'accès MemberPress affichant/masquant le contenu.

Des suggestions pour plus de dépannage?

1
buzzo

Il y a un problème connu avec LearnDash et bbPress/BuddyPress qui peut être la cause, j'ai rencontré la même chose moi-même. Exaspérant! Et cela est proportionnel au nombre d'événements BP générés. Par conséquent, plus l'activité de l'utilisateur est importante, plus elle se produit. Détails dans le site de support LearnDash ici .

J'ai utilisé le code suivant pour corriger:

// Fix for LearnDash causing 404s on BuddyPress activity (updates, messages)
add_filter( "learndash_flush_rewrite_rules", function( $flush, $post_options ) {
return true;
}, 4, 2 );
0
ChristopherS