2008-12-03 10 views
2

J'ai déplacé un ex-site basé sur joomla à wordpress. L'importation a bien fonctionné mais le problème est que les anciens liens ne fonctionnent plus. Parce qu'il n'y a qu'une cinquantaine d'articles, je pense que ce serait une bonne idée de mettre une règle pour chaque article (dans .htaccess).Rediriger l'URL de joomla à wordpress

Eh bien ... pas toujours les choses sont comme vous voulez, si réoriente ne fonctionnent pas du tout :(

vieux liens joomla ressemble à 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 à:

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 regex aidera

  • anciens et nouveaux site sont sur le même domaine

Ok, le problème est que toute règle que j'ai essayé (et j'ai essayé beaucoup!), Aucune n'a fonctionné. Dans quelques cas, j'ai une erreur de 500, mais la plupart du temps, la redirection n'a pas fonctionné.

Alors, l'un de vous a-t-il eu le même problème? Je ne veux pas forcément avoir de beaux permaliens, mais si je peux, ça ira mieux. Le problème est que j'ai beaucoup de backlinks à l'ancienne URL et je ne veux pas les perdre.

Merci beaucoup les gars!

Répondre

1

Étant donné que la conversion de votre site vers Wordpress est relativement récente, 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 regex assez facilement.

Une autre option serait de créer un script PHP séparé qui gère le Joomla! Les URL redirigent ensuite vers les Wordpress. Donc vous auriez une regex dans votre configuration Apache détectant index.php? Option = com_content & tâche = afficher les URL, trouver la valeur de 'id', puis rediriger vers someotherscript.php qui aurait une carte de vos identifiants de Joomla! à Wordpress. Ce script utilisera ensuite l'en-tête ('Location:? P ='. $ Id) pour rediriger vers la bonne page dans Wordpress.

+0

Le champ d'en-tête de localisation doit être un URI absolu. – Gumbo

+0

Je viens de faire une redirection relative et cela a fonctionné. – jlleblanc

+0

Pas une option très obtenu à mon humble avis, ici vous créez 2 redirige un de l'original vers un script spécial (par exemple someotherscript.php) et formez là une deuxième redirection vers la nouvelle URL. Ceci est un problème de performance énorme et pourrait réduire votre classement SEO – Webdesigner

1

Thnaks pour l'idée! Je l'ai mis dans index.php (wordpres par défaut):

if(isset($_GET['option'])) { 
    if(is_numeric($_GET['id'])){ 
     header ('HTTP/1.1 301 Moved Permanently'); 
     header("Location: http://www.site.com/?p={$_GET['id']}"); 
     die(); 
    }else { 
     die('Hacking attempt'); 
    } 
} 

Et fonctionne comme ... GRAND! : D

+1

Je n'écris généralement pas "tentative de piratage" dans mes relances. J'écris juste "Undefined error" ou redirige vers mon index. – GmonC

0

Une autre option aurait pu être d'utiliser un plugin de redirection pour le faire pour vous. Enregistre la rupture de la solution chaque fois que vous modifiez ou mettez à jour votre thème.

+0

connaissez-vous un plugin de redirection? :) –

+0

J'aime celui appelé "redirection". http://urbangiraffe.com/plugins/redirection/ Bonne chance, Stephen –

0

J'ai eu un problème très similaire avec un CMS inconnu à Joomla. Si vous voulez le faire avec .htaccess dans Apache il y a un moyen, mais s'il n'y a aucune relation absolue entre l'ancienne URL et la nouvelle URL que 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 suis pas sûr 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 que vous pouvez le faire, mais vous devez ajouter un?à la fin de la destination sinon l'ancienne chaîne de requête sera ajouté à vous nouvelle destination comme ceci: https://example.com/path/to/new/page?option=com_content&task=view&id=49&Itemid=29 donc pour cet exemple le faire comme suit:

RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$ 
RewriteRule ^index\.php$ /path/to/new/page? [R=301,L]