views:

1149

answers:

3

Hi. I moved an ex-site based on joomla to wordpress. Import worked fine but the problem is that the old links don't work anymore. Because there is only 50 or so articles, i thought will be a good idea to put a rule for each post (in .htaccess).

Well... Not always things are like you want, so redirects dont work at all :(

Old joomla links looks like this:

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

And need to be translated to:

http://site.com/?p=23
http://site.com/?p=24
http://site.com/?p=25
  • basically no relations between old and new links, so i don't think a regex will help

  • both old and new site are on the same domain

Ok, the problem is that any rule i've tried (and i tried a LOT!), none worked. in few cases i get 500 error, but most of times the redirect didn't work.

So, any of you guys had same problem? I don't necessary want to have nice permalinks, but if i can, that will be better. The problem is that i have many backlinks to old url's and i don't want to loose them.

Thanks a lot guys!

+1  A: 

Since the conversion of your site over to Wordpress is relatively new, is there anything preventing you from using the old Joomla! ID's in your WP database table? This would allow you to use a regex fairly easily.

Another option would be to create a separate PHP script that handles the Joomla! URLs then redirects to the Wordpress ones. So you would have a regex in your Apache configuration detecting index.php?option=com_content&task=view URLs, finding the value for 'id', then redirecting to someotherscript.php that would have a map of your ids from Joomla! to Wordpress. This script would then use header('Location: ?p=' . $id) to redirect to the correct page in Wordpress.

jlleblanc
The Location header field has to be an absolute URI.
Gumbo
I just did a relative redirect and it worked.
jlleblanc
+1  A: 

Thnaks for the idea! I put this in index.php (wordpres default):

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');
    }
}

And works like... GREAT! :D

Ionut Staicu
I usually don't write "Hacking attempt" in my raises. I just write "Undefined error" or redirect to my index.
GmonC
A: 

Another option might have been to use a redirection plugin to do this for you. Saves the solution breaking each time you change or update your theme.

Stephen Baugh
do you know a redirection plugin? :)
Ionut Staicu
I like one called "redirection". http://urbangiraffe.com/plugins/redirection/Good luck, Stephen
Stephen Baugh