I hate SEO.
Hate it to death.
But it’s a necessary evil so I have to deal.
So I am very happy when I can find plugins that will do a lot of the work for me.
One such plugin is the popular All In One SEO.
Another is the XML Sitemap Generator Plugin for WordPress which does just as the name implies: it generates an XML sitemap for your WordPress site. An XML sitemap helps search engines crawl through your site more thoroughly. The plugin can be configured to notify various search engines of changes to your site so they will queue up your site to get crawled again to find and index the new content. You can also add the XML sitemap URL to your Google Webmaster Tools account.
After installing the plugin I kept getting an error when I tried to manually create a sitemap:
There was a problem writing your sitemap file. Make sure the file exists and is writable.
Note: I’m running WordPress on a Deluxe Windows Hosting account at Godaddy.com
I checked to make sure the folders and files had writable permissions and they did.
Then I noticed the setting on the plugin config page called “Location of your map file”. I wondered if the plugin was having trouble finding the proper location to write the file.
The location setting was on “Automatic” so I switched it to “Custom location” and entered the relative path where I thought the file should be. No good.
The “Custom location” also takes an absolute path. Using an absolute path might come back to bite me later should the server change, but I wanted to make sure this worked. So I wrote a quick PHP script to find the absolute path of my site root (where the sitemap XML should be located):
Realpath is a PHP function that retrieves the absolute path of the specified file.
I uploaded the PHP file to the root folder of my blog and ran it on the site. I then copied and pasted the path into the Custom Path setting.
And it didn’t work.
I gave up for the day. I came back today to try to fix the problem and found there was an update for that plugin that was available (3.1.6 as of this writing). I updated the plugin, and it worked!
I’m not 100% it was the update that fixed it, but it’s working now.
Just to be sure, I switched it back to the “Automatic Detection” setting. It failed. Switching it back to Custom worked fine.