After too much pain with both BlogEngine.NET and GoDaddy hosting I moved this site over to WordPress (on DreamHost) last week.
I’ve been using WordPress and DreamHost for years on my other sites, so it was only a matter of time before my personal blog finally made the move. Recent issues with BlogEngine.NET – including Search and Comments not working after a recent update – were the final straw.
I’d been dreading the work involved to make the move, but it turned out to be pretty easy. I basically followed the steps Merill outlined, with a few tiny additions that I’ll outline below. The process even includes a CSV with the required redirects to add to your .htaccess file, so you won’t lose any hard earned Google juice.
Note that the import only imports posts (ie no pages) from BlogEngine.NET – so make a manual backup of the pages from your site (eg copy the source HTML).
Update: See also Colin Nicholls’ notes on how he made the transition.
Here’s a summary of the steps:
- I’ll assume you have a blank WordPress site set up. Make sure you’ve set the Permalink structure you’d like before you do the import – the import will honour those settings.
- Export from BlogEngine.NET to a BlogML.xml file.
- Copy all the images from your old blog up to the new blog (eg into the /wp-content/uploads/ directory)
- Make some replacements in the BlogML.xml file (eg the images paths – BlogEngine uses image.axd?picture= re-directs that you can replace with the direct path name you used in point 3)
- Edit the categories in the BlogML.xml file (you’ll need to replace the GUID-like IDs with the actual category names – both at the top and throughout the file)
- Download the wonderful BlogML import script for WordPress by Aaron Lerch (get it here) and FTP it up to your /wp-admin/import/ directory.
- You may need to make some changes to the settings if you have a large file. Add these to the start of the BlogML import script just after the require_once(‘XPath.class.php’);
ini_set(“memory_limit”,”146M”);
ini_set(“max_execution_time”, “300”);
ini_set(“max_input_time”, “300”);
These set the memory used to 146M* (up from a default of 8MB) and the timeouts to 300 seconds (up from a default of 30). If you import has errors you may need to up these values even more. My import had 913 posts and took roughly 4 mins (ie 240 seconds). Yours may be more if you have a big site to move. - Import the file in WordPress (from Tools -> Import -> BlogML)
- You may discover after the import that some things aren’t quite right (eg image paths), and need to import again after fixing (it took me about 5 imports until I got it all right). Before doing so, you’ll want to delete all the imported posts. You can easily do a bulk delete using the Bulk Delete WordPress plug-in.
- Download the CSV file of redirects. Open your .htaccess file and add them in. You’ll need to manually add any category re-directs.
- You can then do all the usual blog stuff (updating your FeedBurner feed source, submitting your sitemap.xml to Google Webmaster tools, etc)
Hope that helps. If you’d like any further details, leave a comment/question and I’ll update the post.
* Note: I have a Virtual Private Server on DreamHost, so I can increase my memory to 146MB no trouble – depending on your hosting package, you may limits less than this.
For some reason I keep getting this error:
Warning: Invalid argument supplied for foreach() in /home/ringof/public_html/wp-admin/import/blogml.php on line 126
Warning: Invalid argument supplied for foreach() in /home/ringof/public_html/wp-admin/import/blogml.php on line 133
Anyone else running into this?
The file is very small so I am not sure what the issue is.
Please help.
George
Hi George. Hmmm I can’t think what is causing this.
Feel free to email me your xml file if you like and I’ll take a look. I suspect it will be something to do with the xml rather than something on your environment.
But, just to check – are you running this on Apache, or on IIS?
For some reason I keep getting this error:
Warning: Invalid argument supplied for foreach() in /home/ringof/public_html/wp-admin/import/blogml.php on line 126
Warning: Invalid argument supplied for foreach() in /home/ringof/public_html/wp-admin/import/blogml.php on line 133
Anyone else running into this?
The file is very small so I am not sure what the issue is.
Please help.
George
Hi George. Hmmm I can’t think what is causing this.
Feel free to email me your xml file if you like and I’ll take a look. I suspect it will be something to do with the xml rather than something on your environment.
But, just to check – are you running this on Apache, or on IIS?
Craig,
You won a beer. I was giving up while importing from DotNetBlog engine, while I say, let me try to add these lines he suggest …
ini_set(“memory_limit”,”146M”);
ini_set(“max_execution_time”, “300”);
ini_set(“max_input_time”, “300”);
And that solved the problem.
Thanks man.
Craig,
You won a beer. I was giving up while importing from DotNetBlog engine, while I say, let me try to add these lines he suggest …
ini_set(“memory_limit”,”146M”);
ini_set(“max_execution_time”, “300”);
ini_set(“max_input_time”, “300”);
And that solved the problem.
Thanks man.
The post is pretty interesting. I really never thought I could have a good read by this time until I found out this site. I am grateful for the information given. Thank you for being so generous enough to have shared your knowledge with us.
Your post is one of the nice posts I have ever read. The conversation itself proved that your article is quite a treasure. Keep on posting more insightful posts.
Thanks for taking time to write this! Made my transition from MochaHost to Linode a breeze.
[…] article basically describes the process of exporting to BlogML, installing WordPress locally, installing a […]
Good article, keep it up.
Hello There. I discovered your weblog using msn.
This is a really smartly written article. I will be sure to
bookmark it and come back to read extra of your helpful
information. Thank you for the post. I will definitely return.