我很难让我的服务器识别网址中的cgi-bin。
如果我将cgi脚本放在任何站点的根文件夹中,它可以完美地工作,而不会在URL中包含cgi-bin。所以我的服务器正在正确处理cgi。如果我尝试使用任何cgi-bin配置,则会导致404错误。
我在运行OS 10.10的Mac服务器上运行它。理想情况下,我想在/ Library / WebServer / CGI-Executables中找到cgi脚本并将其称为cgi-bin:Some.com/cgi-bin/my.cgi?yaddayadda。
为此,我编辑了Apache的httpd.conf文件。它已经设置为路径但导致404.目前httpd.conf是:
# "/Library/WebServer/CGI-Executables" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
ScriptAlias /cgi-bin/ /Library/WebServer/CGI-Executables/
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options +ExecCGI
AddHandler cgi-script .cgi .wsgi
</Directory>
# To allow CGI program execution for any file ending in .cgi in
# users' directories, you can use the following configuration.
#ScriptAlias /cgi-bin/ /home/*
# <Directory /home/*>
# Options +ExecCGI
# AddHandler cgi-script .cgi
# </Directory>
# If you wish designate a cgi-bin subdirectory of a user's directory
# where everything will be treated as a CGI program, you can use the following.
# ScriptAlias /cgi-bin/ /home/cgi-bin/
# <Directory /home/cgi-bin>
# AllowOverride None
# Options +ExecCGI
# AddHandler cgi-script .cgi
# </Directory>
如图所示,我也尝试在站点文件夹中使用cgi-bin文件夹。我还添加了.wsgi处理程序,并使用Python Hello World获得了相同的结果。它也适用于任何站点的根文件夹。我只是不能把它作为cgi-bin来引用我想要的东西。即使我在CGI-Executables中嵌套了一个cgi-bin文件夹。我总是得到“在这台服务器上找不到请求的URL /cgi-bin/my.cgi。”
我在每次编辑后重新启动Apache,并多次重启整个机器。什么都没有改变。
除非我在上面的编辑中做错了,否则几乎就像Apache忽略了httpd.conf一样。我不知道如何确认Apache启动时是否正在读取该文件。没有其他httpd.conf文件位于任何重要的位置,并且那些通常带有表明它们来自过去的名称:httpd.conf.pre-update和httpd.conf-previous。
我最好的猜测是我在路径或别名路径中有一些错误。我已经尝试过我可以提出的各种变化。我想要的cgi-bin的完整路径是:Server HD2 / Library / WebServer / CGI-Executables。或者站点根文件夹中的cgi-bin文件夹是:Server HD2 / Library / WebServer / Documents / TheSite / cgi-bin
我还检查过可能覆盖我编辑的任何.htaccess文件。找不到。
提前感谢任何建议。