Finaliser la page d'erreur vers la 404

WRInaute discret
Bonjour à tous,
Site : https://www.pepiniere-courtin.fr/

Mon site utilise la page 404 (404.php) créée d'origine par wordpress.
Elle fonctionne à peu près bien même si elle a perdu le formulaire de recherche en route.
Par exemple, pour vous en rendre compte, si vous tapez l'url suivante : https://www.pepiniere-courtin.fr/realisations/abattage-elagage/
la page est bien redirigée vers /404 car la page en question n'existe plus (page supprimée).

Par contre, si on tape l'url avec une faute de frappe,
La page d'erreur devrait basculer vers la page 404 comme pour une faute de frappe dans l'url.
Voici le message d'erreur :
Il y a eu une erreur critique sur ce site.
En apprendre plus sur le débogage de WordPress.
J'ai vu sur le lien :
https://www.webrankinfo.com/dossiers/webmastering/page-erreur-personnalisee
qu'il faudrait ajouter cette ligne dans .htaccess
ErrorDocument 404 /404.php

A quel endroit du fichier .htaccess placer cette ligne supplémentaire ?

Peut-être que c'est cette ligne manquante qui crée l'erreur ?

Mes souvenirs en php remontent assez loin maintenant. C'est pourquoi je demande votre aide.
D'avance merci.
Cordialement,
 
WRInaute accro
C'est une erreur PHP/WordPress, il faut activer le mode debug de WP comme clairement expliqué dans le lien.
 
WRInaute accro
L'erreur WordPress / PHP, comme dit spout, n'a strictement rien à voir avec une page inexistante, mais avec un bout de code mal écrit.
 
WRInaute discret
Bonjour à tous,

Effectivement, c'est une erreur de syntaxe php. Mais je me suis aperçu que j'avais oublié de citer le code de 404.php.

Tout d'abord, le message d'erreur rapporté par wP_Debug :
[09-Jun-2024 13:12:15 UTC] PHP Parse error: syntax error, unexpected token "/" in /home/pepiniers/www/wp-content/themes/explore-enfant/404.php on line 33

Pour les experts du php, voici le code du fichier 404 :
<?php
/**
* The template for displaying 404 pages (Page Not Found).
*
* @package ThemeGrill
* @subpackage Explore
* @since Explore 1.0
*/

get_header(); ?>

<?php do_action( 'explore_before_body_content' ); ?>

<div id="primary">
<div id="content" class="clearfix">
<section class="error-404 not-found">
<div class="page-content">

<?php if ( ! dynamic_sidebar( 'explore_error_404_page_sidebar' ) ) : ?>
<header class="page-header">
<h1 class="page-title"><?php /*_e( 'Oups! That page can&rsquo;t be found.', 'explore' ); */ ?></h1>
<h1 class="page-title"><?php _e( 'Oups! Cette page est maintenant introuvable.', 'explore' ); ?></h1>
</header>
<p><?php /* _e( 'It looks like nothing was found at this location. Try the search below.', 'explore' ); */ ?></p>
<p><?php _e( 'Essayez plutôt la recherche ci-dessous. ', 'explore' ); ?></p>
<?php get_search_form(); ?>

<?php endif; ?>

<p>
<?php _e( ' <a href="/">Retourner sur la page Accueil. ', 'explore' </a>); ?>
<?php endif; ?>
</p>

</div><!-- .page-content -->
</section><!-- .error-404 -->
</div><!-- #content -->
<?php
$layout = explore_sidebar_layout();
if ( $layout == "both_sidebar" ) {
get_sidebar( 'left' );
}
?>
</div><!-- #primary -->

<?php
if ( $layout != "no_sidebar_full_width" && $layout != "no_sidebar_content_centered" ) {
get_sidebar();
}
?>

<?php do_action( 'explore_after_body_content' ); ?>

<?php get_footer(); ?>

C'est l'endroit où je voudrais ajouter un lien pour retourner à l'accueil si l'internaute est perdu.
Comment écrire ces 2 ou 3 lignes pour permettre un retour à l'accueil ?

Nota : j'ai ajouté la ligne errordocument juste avant de refaire le test.

Pour plus de clarté, je répondrai après dans un autre post pour la remarque et le conseil d'Olivier.

Merci.
 
WRInaute discret
Pour répondre à Olivier et savoir exactement ce qu'il faudrait pour la redirection citée au début de mon premier message :
Je dis ceci :
la page est bien redirigée vers /404
Olivier répond et dit ceci :
justement ça ne va pas, il ne faut pas de redirection

Et pourquoi j'ai fait cela :
Il s'agit d'une page que j'ai supprimé car l'activité elle-même est supprimée.
Je retrouve le lien de cette page supprimée dans GSC : pages non indexées, catégorie introuvable (404).
Si je ne fais pas de redirection, cela va générer une erreur !

Question :
Pourquoi cela ne va pas ? Pourquoi il ne faut pas de redirection ?
 
Olivier Duffez (admin)
Membre du personnel
si une page n'existe pas (ou plus), l'URL dans le navigateur ne doit pas changer et le serveur doit renvoyer un code 404 (ou 410) (et l'utilisateur a un message qui lui explique la situation)
par exemple si je vais sur /realisations/abattage-elagage/ je dois rester sur /realisations/abattage-elagage/
essaie mon outil https://www.webrankinfo.com/outils/header.php et tu verras qu'il y a d'abord une redirection (301) puis ça aboutit à une erreur 500 (à cause du pb dans le code PHP)
 
WRInaute discret
Je viens de supprimer la redirection de la page en question mais on arrive à la page /404 avec l'erreur de code php que j'ai citée un peu plus haut.
J'attends donc maintenant une réponse pour pouvoir corriger cette erreur.

Nota :
Quand je fais une redirection de cette page vers 404.php, le navigateur affiche bien la page 404 (sans le formulaire de recherche) mais sans erreur.
Par contre, pour la même page en erreur sans redirection, l'url de la page affichée est /404 et elle rencontre l'erreur en question.
 
WRInaute discret
Je viens de modifier le code 404 :
j'ai enlevé la ligne de code en php pour écrire le lien en html.
Et maintenant, ça fonctionne pour les pages qui ne sont pas redirigées.

J'ai vérifié à nouveau le lien : https://www.pepiniere-courtin.fr/realisations/abattage-elagage/
Cette fois-ci, il m'affiche bien page introuvable et reste sur la page en erreur.

Question :
Mais GSC dans tout cela ?
GSC veut que l'on corrige les erreurs 404. Or là, nous avons une page 404 et GSC nous demande d'agir pour les supprimer.

Dans quels cas il faudrait réaliser une redirection et dans quel cas laisser en l'état l'url de la page ?

Encore merci. On progresse !
 
Olivier Duffez (admin)
Membre du personnel
cette fois c'est bon

si la page n'existe pas ou plus, c'est NORMAL d'avoir un code 404 (ou 410). Ce n'est pas "une erreur que Google veut que l'on corrige". Sauf évidemment si la page devrait exister. Ou alors, dans le cas spécial ou la page change d'URL, ou qu'on a une autre qui est très similaire, alors il vaut mieux faire une redirection 301.

il reste à vérifier qu'il n'y a aucun lien interne qui pointe vers une 404. Un crawler SEO comme RM Tech (mon outil) permet de le vérifier (il y en a d'autres).
 
WRInaute discret
Bonjour à tous,

J'ai donc maintenant compris quand il faut faire une redirection, l'existence de la page 404. Merci Olivier.
Il me reste à vérifier qu'aucun lien interne ne pointe vers une page 404.

Encore merci à tous ceux qui m'ont répondu.
 
Discussions similaires
Haut