Drupal, GoDaddy, and '500 internal server error'

As a quick note here today, I just switched some of my domains to fall under a GoDaddy "ultimate hosting" plan, where you pay for one shared server, and then you can put all your domains under that one shared server account. (At this point I can say that this saves money, but the GoDaddy 4GH performance is horrible.)

When I did this with one of my domains, AlaskaSquirrel.com, the front page of the website came up okay, but any other page on this Drupal website returned an Internal server error (seen in my web browser as a "500 Internal server error").

Fixing the Drupal GoDaddy 500 internal server error

After some digging around, the solution to this 500 error is to fix one setting in your Drupal .htaccess file. You just need to add (or uncomment) this line in your .htaccess file:

RewriteBase /

This has to do with the fact that Drupal is no longer running in the root directory of your website directory structure, but is now running in a folder underneath your main/root directory. You should find this setting near the bottom of your Drupal .htaccess file, and all you have to do is remove the comment tag '#' before that line to enable this setting.

GoDaddy file system flushing problems

Also, it's important to note that on some occasions the GoDaddy file system doesn't pick up this change right away. I have no idea how the GoDaddy filesystem works, but on several occasions lately I've seen that changes aren't getting written to the filesystem immediately. If this happens you can either try to wait, or keep changing the file until it finally gets written to the disk.

(For instance, on a recent PHP script I wasn't seeing my logging output right away, and had to wait nearly a minute to see what my script was writing. I finally added a fflush() function call to my script to try to force the filesystem to flush the output.)

More on the Apache RewriteBase statement

As a final note, the Drupal .htaccess file comments describe the Apache RewriteBase statement, so if you're interested in why this command is necessary, here you go:

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
RewriteBase /

In theory I should have had to use the first RewriteBase syntax, including my subdirectory, but I 'm guessing that GoDaddy already has this site wrapped in a VirtualDocumentRoot/VirtualDirectory statement, so that's not necessary.

I hope these notes on Drupal, GoDaddy's 4GH hosting service, ultimate hosting plan, and 500 internal server errors has been helpful. I'll be happy if it saves you all the time I just spent trying to fix this problem on my own GoDaddy/Drupal website.