Once again, my site's been playing up. All the links within the site were giving HTTP 404 errors. This has happened before, because I use the FancyURLs option within Nucleus, which makes the URLs of each article more search engine friendly, but less web server friendly. Last time this broke was when the .htaccess file had been replaced by persons unknown who had compromised the site. However, looking into it, the .htaccess file was there and contained the right content. This files contains instructions for the webserver to URLs like "/item/223", and pass them to the the Nucleus PHP scripts to handle. Unfortunately, it looks like my hosting provider made some changes to their implementation of PHP and Apache, and the standard instructions for making FancyURLs work are no longer compatible. The old .htaccess file had directives along the lines of:

<FilesMatch "^item$">
    ForceType application/x-httpd-php
</FilesMatch> 

After much digging around and experimenting, I have a solution. Instead of using the Apache ForceType directive, the Apache SetHandler directive works instead. So now the above should be changed to:

<FilesMatch "^item$">
    SetHandler php-script
</FilesMatch>

I'm not going to pretend I understand all the intricacies of this, but the notice I got from my hosting provider about the PHP changes gave some clues. They've switched from the PHP Apache module to a CGI-based installation of PHP. There was a hint that to make PHP work, you need to use the AddHandler directive, so a bit more digging around suggested that switching from ForceType to SetHandler would probably have the same effect under the new installation, and hey presto, it worked! Fingers crossed, everything is back to normal - sorry for any disruption in service.

So, if you're having problems with FancyURLs not working in Nucleus CMS, then try the above - obviously you'll need to make the change for each entry in the .htaccess file (and for each .htaccess file if you're running blogs in multiple directories). Good luck!