Question

J'ai déplacé un ancien site basé sur joomla vers Wordpress. L'importation a bien fonctionné, mais le problème est que les anciens liens ne fonctionnent plus. Comme il n’ya qu’une cinquantaine d’articles, j’ai pensé qu’il serait judicieux de définir une règle pour chaque article (en .htaccess).

Eh bien ... Les choses ne sont pas toujours comme vous le souhaitez, les redirections ne fonctionnent donc pas du tout: (

Les anciens liens joomla ressemblent à ceci:

http://site.com/index.php?option=com_content&task=view&id=49&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=42&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=68&Itemid=29

Et doivent être traduits en:

http://site.com/?p=23
http://site.com/?p=24
http://site.com/?p=25
  • fondamentalement, pas de relations entre les anciens et les nouveaux liens, donc je ne pense pas qu'une regex va aider

  • l'ancien et le nouveau site sont sur le même domaine

Ok, le problème est que toutes les règles que j'ai essayées (et j'ai essayé BEAUCOUP!), aucune n'a fonctionné. Dans quelques cas, je reçois une erreur de 500, mais la plupart du temps, la redirection ne fonctionnait pas.

Alors, vous avez eu le même problème? Je n'ai pas nécessairement besoin d'avoir de bons permaliens, mais si je peux, ça ira mieux. Le problème, c’est que j’ai beaucoup de backlinks vers les anciennes URL et que je ne veux pas les perdre.

Merci beaucoup les gars!

Était-ce utile?

La solution

La conversion de votre site vers Wordpress étant relativement nouvelle, y a-t-il quelque chose qui vous empêche d’utiliser l’ancien Joomla! ID dans votre table de base de données WP? Cela vous permettrait d’utiliser une expression rationnelle assez facilement.

Une autre option consisterait à créer un script PHP distinct qui gère le fichier Joomla! Les URL redirigent ensuite vers celles de Wordpress. Ainsi, dans votre configuration Apache, vous auriez un regex détectant index.php? Option = com_content & task = view = afficher les URL, trouver la valeur pour 'id', puis rediriger vers someotherscript.php qui aurait une carte de vos identifiants de Joomla! à Wordpress. Ce script utiliserait alors l’en-tête ('Location:? P ='. $ Id) pour rediriger vers la page correcte dans Wordpress.

Autres conseils

Merci pour l'idée! Je mets ceci dans index.php (wordpress default):

if(isset(

Merci pour l'idée! Je mets ceci dans index.php (wordpress default):

<*>

Et fonctionne comme ... génial! : D

GET['option'])) { if(is_numeric(

Merci pour l'idée! Je mets ceci dans index.php (wordpress default):

<*>

Et fonctionne comme ... génial! : D

GET['id'])){ header ('HTTP/1.1 301 Moved Permanently'); header("Location: http://www.site.com/?p={

Merci pour l'idée! Je mets ceci dans index.php (wordpress default):

<*>

Et fonctionne comme ... génial! : D

GET['id']}"); die(); }else { die('Hacking attempt'); } }

Et fonctionne comme ... génial! : D

Une autre option aurait peut-être été d'utiliser un plug-in de redirection pour le faire à votre place. Enregistre la solution chaque fois que vous modifiez ou mettez à jour votre thème.

J'ai eu un problème très similaire avec un CMS inconnu à Joomla. Si vous voulez le faire avec .htaccess dans Apache, il existe un moyen, mais s'il n'y a aucune relation absolue entre l'ancienne URL et la nouvelle URL, vous devez écrire deux lignes pour chaque paire d'URL.

RewriteEngine On
# now the first Example
RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /?p=23 [R=301,L]
# Repeat last two lines for all your URLs

Je ne sais pas si vous avez vraiment ce genre de nouvelles URL. Personnellement, une URL SEF serait mieux, par exemple: https://example.com/path/to/new/page

Si vous voulez faire cela, vous pouvez le faire, mais vous devez ajouter un? à la fin de la destination, sinon l'ancienne chaîne de requête serait ajoutée à votre nouvelle destination, comme suit: https://example.com/path/to/new/page?option=com_content&task=view&id= 49 & amp; Itemid = 29 Donc, pour cet exemple, procédez comme suit:

RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /path/to/new/page? [R=301,L]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top