Комментарии о cgi и wsgi действительны, но если вы действительно хотите перейти к настройке cgi, вам нужны некоторые правила переписывания, чтобы перехватывать URL-адреса, отличные от «/», в index.cgi. С вашей настройкой вы в основном говорите, что индексный файл - index.cgi, но в случае, если в пути есть что-то еще, index.cgi не будет выполнен. Вот почему вы получаете 404 Not Found для запроса / pi.
Вы можете получить доступ к функции pi (), запросив url /index.cgi/pi, и она успешно отобразит 3.1416, но, очевидно, это не очень хороший URL. Это дает подсказку о том, что нужно настроить для перезаписи: переписать все запросы с помощью / в /index.cgi/. Это дает очень простые правила перезаписи вместе с вашей исходной конфигурацией:
Options +ExecCGI
AddHandler cgi-script .cgi .py .rb
DirectoryIndex index.cgi index.htm
RewriteEngine On
RewriteRule ^index.cgi/(.*)$ - [S=1]
RewriteRule ^(.*)$ index.cgi/$1 [QSA,L]