Comment puis-je ignorer la gestion 404 de Wordpress et rediriger toutes les erreurs 404 des fichiers statiques vers 404.html?

15

Comment puis-je ignorer la gestion 404 de Wordpress et rediriger toutes les erreurs 404 des fichiers statiques vers 404.html?

J'ai lu et il semble que ce ne soit pas possible avec les permaliens?

L'objectif est de réduire la charge du serveur pour les erreurs 404 en ne chargeant pas php.

    
posée freethinker 01.08.2011 - 15:09

7 réponses

8

.htaccess ignore la gestion des erreurs WordPress 404 pour les fichiers statiques .

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
        RewriteCond %{REQUEST_FILENAME} \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ [NC]
        RewriteRule .* - [L]
    </IfModule>

Remarque: ces règles ont été générées par le plug-in W3 Total Cache *

.

Nginx ignore la gestion de WordPress 404 pour les fichiers statiques.

if (-f $request_filename) {
    break;
}
if (-d $request_filename) {
    break;
}
if ($request_uri ~ "(robots\.txt|sitemap\.xml(\.gz)?)") {
    break;
}
if ($request_uri ~* \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$) {
    return 404;
}
    
réponse donnée Chris_O 01.08.2011 - 20:13
1

Pour prolonger ce que Chris_O a dit ..., j'installerais W3 Total Cache et utiliserais les paramètres de ce plugin pour ne pas mettre en cache les fichiers statiques. Le plugin en lui-même est très utile et indispensable pour accélérer votre site, en particulier avec la dernière mise à jour.

Je vous recommande également de consulter la Création d’une page d’erreur 404 à partir de Wordpress pour savoir comment gérer 404 les fichiers statiques. 403 (interdit), etc. C'est une bonne lecture.

    
réponse donnée Matthew Xerri 02.09.2011 - 13:14
1

Peut-être une solution simple. Utilisez la balise conditionnelle is_404() et créez une redirection vers votre fichier statique. inclure le code dans le fichier header.php ou index.php du thème.

Voici un exemple.

   if ( is_404() ) {
      wp_redirect( 'static.htm' );
      exit;
   }

Liens

réponse donnée bueltge 01.08.2011 - 19:24
0

Je ne suis pas sûr que cela soit possible. Si vous examinez le code htaccess créé par WordPress lorsque vous activez des liens permanents, il indique en principe: "Si le fichier / répertoire est introuvable, envoyez-le à index.php." Cela inclut toutes les demandes 404 réelles. En plus de créer une liste de toutes les ressources publiques générées dynamiquement dont WordPress a connaissance et de l'insérer directement dans .htaccess, vous devez charger php pour gérer les fichiers 404.

    
réponse donnée mfields 01.08.2011 - 19:37
0

J'ai aimé l'idée de Chris_O , mais j'ai créé ma propre version, qui est plus sûre.

Donc, ce que j’ai fait, j’ai simplement ajouté des dossiers à une exception. Ainsi, si vos demandes partent de ces lignes, ce n’est définitivement pas un permalien valide. La majorité des requêtes proviennent de robots qui essaient de vérifier le contenu de ces dossiers pour détecter des exploits. Elles seront effectivement filtrées et si nécessaire, vous pourrez afficher des petites pages statiques 404.

Les autres demandes seront toujours traitées par wordpress. Si quelqu'un entre une mauvaise adresse, il affichera un message convivial non trouvé dans votre modèle. La solution de Chris_O ne fonctionnera que pour les demandes qui ressemblent à des extensions de fichier, sinon elles seront également traitées par wordpress.

Pour le rendre encore plus fiable, vous pouvez récupérer votre fichier d’accès brut et rechercher des erreurs 404. Si vous remarquez de nombreuses demandes commençant par des lignes particulières, vous pouvez également les inclure dans ce filtre:

#adding your own handler
ErrorDocument 404 /404/index.html

<IfModule mod_rewrite.c>
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !^/(404|cgi-bin|wp-admin|wp-content|wp-includes)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
    
réponse donnée Anonymous 13.06.2016 - 02:01
0

Plusieurs CMS sont installés sur mon site. J'utilise quelque chose comme ceci pour utiliser la même page d'erreur 404 pour tous les CMS. J'utilise cette conf pour Nginx + FastCgi et ça fonctionne très bien:

server {
    ...
    error_page 404 /404.html; #enable custom 404 error page
    location ~ /\.ht {
        deny all; #disable access to htaccess
    }
    location ~ [^/]\.php(/|$) {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_intercept_errors on; #disable PHP 404 error intercept
    }
    location /wordpress/ {
        try_files $uri $uri/ /wordpress/index.php?$args;
    }
}

J'utilise cette configuration avec ceci dans le fichier php.ini:

cgi.fix_pathinfo = 1 

wordpress est installé comme suit enlace . Le fichier 404.html se trouve à la racine de la enlace .

P.S. N'oubliez pas que les services PHP et Nginx doivent être redémarrés après la modification des fichiers php.ini ou nginx.conf pour que les modifications prennent effet.

    
réponse donnée eliz82 10.04.2018 - 18:45
-3

Il y a 3 façons de faire cela

  1. En modifiant votre code 404.php.
  2. En utilisant les plugins wordpress.
  3. En modifiant votre fichier .htaccess.

Didacticiel complet - (lien mort et redirigé vers le spam)

    
réponse donnée Mazhar 05.08.2012 - 12:26

Lire d'autres questions sur les étiquettes