web-dev-qa-db-fra.com

Comment - corriger les redirections WordPress 301?

Je dois 301 rediriger: example.com/service-1.html à example.com/our-services/1/.

J'ai essayé les plugins de redirection et .htaccess:

  1. Redirect /service-1.html /our-services/1/

  2. Redirect 301 /service-1.html http://www.example.com/our-services/1/

  3. RewriteRule ^service\-1\.html$ /our-services/1/? [L,R=301]

  4. RewriteRule ^(.*)/service-1.html$ http://www.example.com/our-services/1/$1 [R=301,L]

Mais rien ne fonctionne, chaque fois que je suis redirigé vers la page du produit (Woocommerce) product/1.

Fichier Wordpress .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Qu'est-ce que je fais mal?

1
Gore

Vous pouvez ajouter la directive à la mauvaise partie de votre fichier .htaccess? Il doit aller en haut, avant les directives WordPress existantes. Vous devez également utiliser RewriteRule (c'est-à-dire mod_rewrite) car vous avez des directives mod_rewrite existantes (le WP contrôleur frontal ).

Quelque chose comme votre 3ème tentative en haut de votre fichier .htaccess devrait aboutir à la redirection appropriée. Par exemple:

RewriteRule ^service-1\.html$ /our-services/1/? [R=302,L]

Passez à un 301 (si tel est l'intention) uniquement lorsque vous êtes sûr que tout fonctionne correctement. Les navigateurs 301 sont mis en mémoire cache par le navigateur. Vous devez donc vous assurer que le cache du navigateur est effacé avant les tests.

Le ? à la fin de la substitution RewriteRule supprime simplement la chaîne de requête de la requête. Que cela soit nécessaire ou non, cela dépend de vous, mais vous n'avez pas de chaîne de requête dans votre exemple.

0
MrWhite