配置apache運行cgi程序可分為兩種情況,1是ScriptAlias目錄的CGI,2是ScriptAlias之外目錄的CGI。
ScriptAlias指令使Apache允許履行1個特定目錄中的CGI程序。當客戶端要求此特定目錄中的資源時,Apache假定其中文件都是CGI程序并試圖運行。
ScriptAlias指令形如:
由于安全緣由,CGI程序通常被限制在ScriptAlias指定的目錄中,如此,管理員就能夠嚴格地控制誰可使用CGI程序。但是,如果采取了恰當的安全方法措施,則沒有理由不允許其他目錄中的CGI程序運行。比如,你可能希望用戶在UserDir指定的宿主目錄中寄存頁面,而他們有自己的CGI程序,但無權存取cgi-bin目錄,這樣,就產生了運行其他目錄中CGI程序的需求。
1、用Options顯式地允許CGI的履行
可以在主服務器配置文件中,使用Options指令顯式地允許特定目錄中CGI的履行:
上述指令使Apache允許CGI文件的履行。另外,還必須告知服務器哪些文件是CGI文件。下面的AddHandler指令告知服務器所有帶有cgi或pl后綴的文件是CGI程序:
2、.htaccess文件
.htaccess文件是針對目錄進行配置的1種方法。Apache在提供1個資源時,會在此資源所在目錄中尋覓.htaccess文件,如果有,則使其中的指令生效。AllowOverride 指令決定了.htaccess文件是不是有效,它指定了哪些指令可以出現在其中,或根本不允許使用。為此,需要在主服務器配置中如此配置:
在.htaccess文件中,需要如此配置:
以使Apache允許此目錄中CGI程序的履行。
最后可以編寫1個cgi程序測試,如: