I CGI vengono gestiti dal modulo mod_cgi ed è possibile abilitarne le funzionalità in due modi differenti:
Direttiva Options
Tramite la direttiva Options e l'argomento ExecCGI, all'interno di un container, è possibile definire quale directory conterrà gli scripts. Esempio:
Options ExecCGI
Direttiva ScriptAlias
Un metodo alternativo è la direttiva ScriptAlias, la quale permette di settare una directory, anche esterna alla DocumentRoot, come CGI container (Soluzione adottata di default). Esempio:
ScriptAlias /cgi-bin "/usr/local/apache/cgi-bin/"
In questo caso Apache interpreterà tutte le richieste con l'url che conterrà cgi-bin come richieste per risorse all'interno della directory /usr/local/apache/cgi-bin/
Nel caso in cui occorra definire più directory contenenti CGI è possibile utilizzare più volte la direttiva ScriptAlias oppure appoggiarsi alla direttiva ScriptAliasMatch che permette l'uso delle regular expression. Esempio:
ScriptAlias /de/cgi-bin "/usr/local/apache/cgi-bin/"
ScriptAlias /it/cgi-bin "/usr/local/apache/cgi-bin/"
ScriptAlias /us/cgi-bin "/usr/local/apache/cgi-bin/"
La seguente configurazione può essere sostituita con una sola direttiva:
ScriptAliasMatch /*/cgi-bin "/usr/local/apache/cgi-bin/"
Nulla vieta di specificare un singolo file CGI e non una directory contenente più CGI, attraverso il File container Esempio:
<Files "/home/www/openskills/">
AllowOverride None
Options ExecCGI
SetHandler cgi-script
</Files>
oppure
<Files "/home/www/openskills/*.cgi">
AllowOverride None
Options ExecCGI
SetHandler cgi-script
</Files>
Tramite le direttive AddHandler è possibile definire quali file sono da interpretare come script CGI tramite l'estensione del file stesso oppure tramite la direttiva AddType a seconda del MIME Type. Esempi:
SetHandler cgi-scripts .cgi .pl .py
AddType application/x-httpd-cgi .cgi