调用表单操作时复制 cgi-bin

cgi-bin is duplicated when form action is called

提问人:Marcos Camargo 提问时间:3/16/2023 最后编辑:brian d foyMarcos Camargo 更新时间:3/17/2023 访问量:95

问:

我在ipage上有一个网站,工作正常。我正在尝试将其迁移到 Google Cloud,当表单操作调用 cgi-bin 时,cgi-bin 被复制,如下所示:

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

如果我删除额外的 cgi-bin,它会起作用,例如:

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

我将脚本list_directory_1.cgi放在 /usr/lib/cgi-bin 中,其操作调用此脚本的表单如下所示:

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

apache2 日志文件显示:

[3 月 16 日星期四 14:39:49.939253 2023][cgid:错误][PID 5389:TID 140165141997312][客户端 107.217.8.189:52312]AH01264:脚本未找到或无法统计:/usr/lib/cgi-bin/cgi-bin,引用者:http://34.28.183.10/cgi-bin/list_directory_1.cgi?directory=%2CBrasil&submit_directory=

Apache CGI-BIN

评论


答:

3赞 Quentin 3/16/2023 #1

相对路径(如 )开头的 URL 由以下方式解析:cgi-bin/list_directory_1.cgi

  1. 采用基本 URL (http://34.28.183.10/cgi-bin/list_directory_1.cgi?directory=%2CBrasil&submit_directory=)
  2. 删除路径中最后一个 (/http://34.28.183.10/cgi-bin/)
  3. 追加相对路径 (http://34.28.183.10/cgi-bin/cgi-bin/list_directory_1.cgi)

请改用绝对路径(以单个 )开头:/

<form action="/cgi-bin/list_directory_1.cgi"

这些问题可通过以下方式解决:

  1. 采用基本 URL (http://34.28.183.10/cgi-bin/list_directory_1.cgi?directory=%2CBrasil&submit_directory=)
  2. 删除后面的所有内容,包括整个路径 (http://34.28.183.10)
  3. 追加绝对路径 (http://34.28.183.10/cgi-bin/list_directory_1.cgi)

评论

1赞 Quentin 3/16/2023
@MarcosCamargo – URL 路径和文件系统路径之间的关系与此问题无关。
0赞 Marcos Camargo 3/16/2023
我在索引 .html 中指定了相同的形式,它在第一次调用时有效,但之后不起作用。
1赞 Quentin 3/16/2023
@MarcosCamargo——我并不感到惊讶。这个答案解释了原因以及如何解决它。