web-dev-qa-db-fra.com

Déplacement d'un site WordPress vers un nouveau domaine - besoin d'aide avec une règle de réécriture d'URL Apache htaccess

J'aide à déplacer un site WordPress d'un domaine à un autre, ce qui implique une modification de la structure du lien permanent. Je sais que je peux utiliser une entrée . Htaccess, mais je ne connais pas (encore) bien les expressions régulières.

J'ai besoin de changer ça:

http://www.oldwebsite.com/2013/09/title-of-post.html

pour ça:

http://www.newwebsite.com/title-of-post

supprimer l'année, le mois et .html de chaque URL.

3
JeffHarbert

J’ai fait cela avec Apache mod_rewrite et cela fonctionne très bien. Ajoutez simplement ces trois lignes à la configuration . Htaccess ou Apache2 sur l’ancien serveur. Cela devrait bien fonctionner/couvrir tous les fichiers .html ainsi que d’autres variantes:

RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^\ ]+)\.html
RewriteRule ^([0-9]{4})/([0-9]{2})/([^\ ]+)\.html?$ http://www.newwebsite.com/$3 [L,R=301]
RewriteRule ^([0-9]{4})/([^\ ]+)\.html?$ http://www.newwebsite.com/$2 [L,R=301]
RewriteRule ^([0-9]{4})/([0-9]{2})/?$ http://www.newwebsite.com/ [NC,L,R=301]
RewriteRule ^([0-9]{4})/?$ http://www.newwebsite.com/ [NC,L,R=301]
RewriteRule ^(.*)$ http://www.newwebsite.com/$1 [NC,L,R=301]

Ainsi, les deux premières RewriteRule entrées gèrent les demandes adressées aux URL suivantes:

http://www.oldwebsite.com/2013/04/test.html 
http://www.oldwebsite.com/2013/test.html 

Et maintenant envoyez-les à:

http://www.newwebsite.com/test

Les deux entrées suivantes RewriteRule gèrent les demandes adressées à ces URL racine de niveau répertoire:

http://www.oldwebsite.com/2013/04/
http://www.oldwebsite.com/2013/

Pour cela l'URL de base de votre site:

http://www.newwebsite.com/

Et la dernière RewriteRule est configurée pour saisir toutes les autres URL qui ne répondent pas aux critères ci-dessus et les envoyer à l’URL principale tout en transmettant le paramètre complet.

Je suggérerais que vous les testiez en utilisant curl -I comme suit:

curl -I http://www.oldwebsite.com/2013/04/test.html

Cela vous montrera la sortie de l'en-tête Apache et vous dira exactement à quel endroit les pages sont redirigées sans avoir à gérer un casse-tête complet du navigateur Web lors du débogage de ce genre de choses.

2
JakeGould