web-dev-qa-db-fra.com

URL Joomla SEO vers WordPress URL

J'essaie de migrer des URL SEF Joomla 1.5 vers WordPress _ URL SEF.

  1. Les anciens liens utilisent cette mise en forme: /site/sectionname/categoryname/id-titlename.html

  2. Je souhaite le migrer vers /wp/index.php?p=id

J'ai modifié mon fichier .htaccess mais cela ne semble pas fonctionner.

RewriteEngine on
RewriteRule ^/(.*)/(.*)/[0-9]+-(.*)$ /index.php?p=$3 [L]

Quelqu'un at-il une idée de la façon dont je peux résoudre ce problème?.

4
manhag

Votre expression régulière présente les problèmes suivants:

  1. Il n'a que .* pour le "site" et le "nom de la section", mais il en manque un pour le "nom de la catégorie". Selon votre exemple, il devrait y avoir un troisième niveau de répertoire dans votre regex.
  2. Vous avez des parenthèses autour des éléments que vous n'avez pas besoin de référencer, mais aucune parenthèse autour de l'ID, que vous devrez référencer. Vous devriez enlever toutes les parenthèses qui sont actuellement dans leur regex et en mettre autour de l'id: ([0-9]+)
  3. Il serait préférable d’utiliser une classe de caractères plutôt que .*. Le point est gourmand et correspondra à tout, y compris la barre oblique suivante. Une expression régulière écrite avec plusieurs .*s dedans nécessitera que le moteur d’expression régulière fasse beaucoup de travail supplémentaire de "suivi". L'expression régulière ne fonctionnera pas aussi bien qu'elle le devrait.
  4. Le . dans .html correspond à n'importe quel caractère, pas seulement à une période littérale. Vous devriez échapper au . à cet endroit: \.html
  5. Si cette règle de réécriture est destinée à .htaccess, l'expression régulière ne doit pas commencer par une barre oblique, la barre oblique de départ est utilisée dans le contexte de .htaccess. Les règles de réécriture ne doivent commencer par / que lorsqu'elles vont dans httpd.conf
  6. Si vous souhaitez que votre règle de réécriture redirige plutôt que d'afficher le contenu à l'URL existante, vous devez remplacer [L] par [L,R=301].

Voici une expression régulière qui fonctionnera peut-être mieux pour vous. Cela suppose que seules les lettres, les chiffres, les traits de soulignement et les tirets peuvent apparaître dans les catégories, les titres, etc.

RewriteEngine on
RewriteRule ^[a-zA-Z0-9_\-]+/[a-zA-Z0-9_\-]+/[a-zA-Z0-9_\-]+/([0-9]+)-[a-zA-Z0-9_\-]+\.html /index.php?p=$1 [L]

Vous pouvez également essayer de mettre cette expression régulière dans le plug-in de redirection mentionné dans la réponse de Timothy.

4

Si vous utilisez Wordpress maintenant, et que vous essayez simplement de rediriger les anciennes URL Joomla vers vos nouvelles URL, je suggère d'utiliser un plugin pour vous simplifier la vie.

Je recommande beaucoup ce plugin:

http://wordpress.org/extend/plugins/redirection/

N'oubliez pas non plus que vous devez utiliser des permaliens sophistiqués dans Wordpress au lieu des numéros d'identification standard. Vous pouvez trouver ce paramètre dans les options de configuration de wp-admin!

4

Je pense que vous pouvez résoudre ce problème spécifique en modifiant un peu votre règle de réécriture pour capturer l’identifiant de la publication et la transmettre. Actuellement, vous transmettez le titre du message, alors que vous devez transmettre l'identifiant.

RewriteEngine on
RewriteRule ~/.*/.*/([0-9]+)-.*$ /index.php?p=$1 [L]
1
Don Gilbert