web-dev-qa-db-fra.com

WordPress multisite .htaccess provoque une erreur 500 sur les anciennes URL * .php

J'ai configuré une nouvelle installation WordPress multisite. Tout fonctionne bien, sauf que Google est toujours en train d'explorer d'anciennes URL (qui ont une extension .php).

Ces URL affichent maintenant une erreur 500, ce qui semble être dû à un problème htaccess - c’est-à-dire que ces URL ne frappent pas WordPress. (J'utilise actuellement le code htaccess multisite standard de WordPress.)

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Je dois ajouter une réécriture au fichier .htaccess du site qui supprimera l'extension .php pour les fichiers qui en contiennent et qui ne sont pas trouvés sur le serveur (c'est-à-dire, exclure les fichiers de base WordPress tels que wp-login.php, etc.)

J'ai utilisé ce code pour supprimer l'extension .php

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]
</IfModule>

Cela a résolu l'erreur 500 et m'a permis de configurer les redirections pour l'ancien site à l'aide du plug-in wp-redirect comme je l'avais initialement prévu, mais cela entraîne certains problèmes de chargement des styles et des images sur certains multisites de sous-dossiers. doit être amélioré!

1
benedict_w

Essayez ce qui suit en haut de votre fichier .htaccess:

Options -MultiViews

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+)\.php$ /$1 [R=302,L]

Ce qui précède redirige toute URL se terminant par .php qui ne correspond pas à un fichier physique et supprime l'extension .php dans la redirection.

Bien que ces demandes (avec une extension .php) ne devraient pas déclencher une erreur 500 en premier lieu? Si la redirection ci-dessus résout le problème, cela semblerait alors impliquer que c'est WordPress lui-même qui déclenche l'erreur 500?


J'ai utilisé ce code pour supprimer l'extension .php

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]
</IfModule>

Cela a résolu l'erreur 500 ...

Ce code est plus susceptible de provoquer une erreur 500 que de le réparer? Cela ne "supprime pas l'extension .php" - il route simplement toutes les URL vers la racine du document, ce qui déclenche le mod_dir pour acheminer la demande à index.php.

0
MrWhite