我正在将一个 CGI 应用程序从嵌入式 Web 服务器移植到 Apache 下运行。为了尽量减少所需的更改,我试图弄清楚如何配置 Apache,以便任何传入的请求都会转到我的 CGI 程序,然后该程序将使用 QueryString 环境变量来确定需要创建哪个文件。
我现在正在运行 Apache,如果直接请求,它将处理我的 CGI 文件,即 localhost/cgi-bin/cgi_test.out
但我需要弄清楚如何让我的应用程序在请求任何文件时被调用:
localhost/-> 调用我的应用程序并将 QueryString 设置为“”或“/”
localhost/thisFile -> 调用我的应用程序并将 QueryString 设置为“/thisFile”
ETC。
我一直在 /etc/apache2/sites-available/mysite 下进行所有配置测试,该配置已启用,默认为禁用。
谢谢你的帮助。
我尝试过这里的建议:配置 apache 通过单个 index.php 处理所有请求但我一直收到循环重定向。
编辑:我尝试了几种不同的 mod-rewrite 变体,但它们还没有起作用。
我在 /usr/lib/cgi-bin(默认位置)下有一个 index.cgi 文件,在 /var/www/ 下有一个默认的 index.html。我已将所有内容恢复为默认设置,因此我已准备好重新开始任何新想法。
答案1
你不喜欢 mod_rewrite 吗?你可以像这样轻松设置 RewriteRule:
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteRule ^(.*)$ /mycgi.cgi [L,E=QUERY_STRING:$1]