How to fix FCGI after ASO breaks it

FastCGI is an amazing performance enhancement for Perl scripts on an Apache web server - but the FCGI module has to be part of the Apache environment, and it requires a configuration setting in your Apache config file. A Small Orange supports FCGI and it works very well, but occasionally they step on your config file and FCGI stops working properly - and the Web support staff just does not know how to resolve this issue, apparently.

Here's the .htaccess config file (located in my public_html directory) that correctly handles .fcgi scripts. The interesting line is line 3, where the fcgid-script process is associated with .fcgi files:

RewriteEngine on
AddHandler cgi-script .pl .cgi
AddHandler fcgid-script .fcgi

AddHandler server-parsed .html
RewriteCond %{HTTP_HOST} ^okbanlon.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.okbanlon.com$
RewriteRule ^mesa/?$ http://okbanlon.com/mesa/cgi-bin/index.fcgi [R=301,L]

AddHandler cgi-script .pm

RewriteCond %{HTTP_REFERER} !^http://okbanlon.com/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://okbanlon.com$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.okbanlon.com/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.okbanlon.com$      [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ - [F,NC]

AddType text/x-script.sh .sh

Line 2 ( AddHandler cgi-script .pl .cgi ) is the generic normal config line that handles plain CGI processing for .pl and .cgi scripts.

Line 3 ( AddHandler fcgid-script .fcgi ) is the line that invokes actual FCGI processing for .fcgi scripts. The fcgid-script handler is baked into the Apache runtime environment, but you have to explain to Apache that you want to use it for your .fcgi scripts.

So - the next time your FCGI scripts either stop working altogether (typically displaying the source code instead of executing the scripts) or stop working properly (running a fresh thread instance on every execution instead of preserving the thread instance for increased performance on subsequent executions), try fixing the problem yourself before contacting the support team.