web-dev-qa-db-fra.com

Règle .htaccess pour rediriger les anciennes URL vers la nouvelle structure

Les anciennes URL étaient de la forme:

https://www.example.com/collection/item/item-name-123

Les nouvelles URL se présentent sous la forme:

https://www.example.com/collection/item/123

J'essaie de rediriger les hits sur
https://www.example.com/collection/item/item-name-123 à https://www.example.com/collection/item/123 mais je n'arrive pas à obtenir la règle .htaccess.

Ce que j'ai essayé, c'est:

RewriteRule ^(.*)/item/(.*)-([0-9]+)$ $1/item/$3 [R=301]

Ce qui ne semble pas fonctionner. Est-ce que je manque quelque chose de simple?

1
Gary

Est-ce que je manque quelque chose de simple?

Vous avez besoin de l'indicateur L (pour empêcher tout traitement ultérieur) et cette directive doit figurer tout en haut de votre fichier .htaccess existant (c'est-à-dire avant la section # BEGIN WordPress).

Sauf si vous avez déjà défini une directive RewriteBase appropriée (WordPress front-controller a généralement cela), vous devez également préfixer la chaîne substitution par une barre oblique (bien qu'il soit recommandé de le faire quand même. redirections externes).

Sinon, votre expression rationnelle et votre chaîne de substitution devraient fonctionner correctement.

En d'autres termes, en haut de votre fichier:

RewriteRule ^(.*)/item/(.*)-([0-9]+)$ /$1/item/$3 [R=302,L]

Testez avec les redirections 302 (temporaires) (pour éviter les problèmes de mise en cache) et passez à un 301 uniquement lorsque vous avez confirmé qu'il fonctionne comme prévu.

Vous devrez vider le cache de votre navigateur avant de le tester.

1
MrWhite