Я написал два приложения fastcgi на C ++ (foo и foobar). Я запускаю apache 2.2 (prefork) с mod_fcgid на Ubuntu 10.x.
Я хочу иметь возможность настроить apache так, чтобы:
http: // mywebsite / some / path1? param1 = value1 & param2 = value2
запустит приложение fastcgi foo
И
mywebsite / another / path1? param1 = value1 & param2 = value2
запустит приложение fastcgi foobar
Примечание. Указанный выше URL-адрес намеренно недействителен (отсутствует тип протокола), поскольку я не могу опубликовать более одной ссылки в этом вопросе.
Как мне настроить apache для этого?
Самый простой способ - использовать директиву FcgidWrapper с включенным параметром virtual. Это означает, что Apache даже не будет пытаться найти «настоящий» файл, а просто вызовет сценарий fcgi.
DocumentRoot /whatever
<Directory /whatever/some/path1>
FcgidWrapper /elsewhere/bin/foo virtual
</Directory>
<Directory /whatever/another/path1>
FcgidWrapper /elsewhere/bin/foobar virtual
</Directory>
В качестве альтернативы вы можете использовать mod_rewrite примерно так:
DocumentRoot /whatever
<Directory /whatever>
RewriteRule /some/path1 /fcgi/foo
RewriteRule /another/path1 /fcgi/foobar
</Directory>
<Directory /whatever/fcgi>
SetHandler fcgid-script
</Directory>