You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至Google Cloud后表单调用cgi-bin路径重复问题

CGI脚本路径重复问题排查与解决

问题现象

网站从iPage迁移到Google Cloud后,表单提交时生成的请求URL出现重复的cgi-bin路径,示例:

http://34.28.183.10/cgi-bin/cgi-bin/list_directory_1.cgi?directory=%2CBrasil%2CMinas+Gerais&submit_trailing_directory=

手动移除多余的cgi-bin后,以下URL可正常访问:

http://34.28.183.10/cgi-bin/list_directory_1.cgi?directory=%2CBrasil%2CMinas+Gerais&submit_trailing_directory=

环境信息

  • CGI脚本list_directory_1.cgi存放路径:/usr/lib/cgi-bin
  • 表单调用的Perl代码:
print qq(<form action="cgi-bin/list_directory_1.cgi" method="GET">
);
  • Apache2错误日志内容:

[Thu Mar 16 14:39:49.939253 2023] [cgid:error] [pid 5389:tid 140165141997312] [client 107.217.8.189:52312] AH01264: script not found or unable to stat: /usr/lib/cgi-bin/cgi-bin, referer: http://34.28.183.10/cgi-bin/list_directory_1.cgi?directory=%2CBrasil&submit_directory=

问题原因

Apache通过ScriptAlias指令将URL中的/cgi-bin/映射到服务器本地的/usr/lib/cgi-bin/目录。当表单所在页面本身已经处于/cgi-bin/路径下时,表单里用的相对路径cgi-bin/list_directory_1.cgi会在现有路径基础上追加,最终生成/cgi-bin/cgi-bin/list_directory_1.cgi的重复路径,导致Apache在/usr/lib/cgi-bin/cgi-bin下找脚本,自然找不到。

解决方法

1. 改用绝对路径(推荐)

修改表单的action属性,在路径前加上/,明确从网站根目录开始定位:

print qq(<form action="/cgi-bin/list_directory_1.cgi" method="GET">
);

不管当前页面在哪个路径下,绝对路径都会直接指向根目录下的cgi-bin,避免路径叠加。

2. 调整表单相对路径

如果表单所在页面和目标CGI脚本都在cgi-bin目录下,直接去掉action里的cgi-bin/,用脚本文件名即可:

print qq(<form action="list_directory_1.cgi" method="GET">
);

3. 检查Apache配置(可选)

打开Apache配置文件(比如/etc/apache2/apache2.conf或虚拟主机配置文件),确认ScriptAlias配置是否正确:

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

确保没有重复配置/cgi-bin/的映射,也没有其他规则导致路径叠加。如果有多余的映射规则,删除即可。

内容的提问来源于stack exchange,提问作者Marcos Camargo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:35:22