2010-10-09 151 views
0

我有一个CGI脚本(pwyky),我称之为index.cgi,放在目录wiki /中,并在访问localhost/wiki时设置Apache来调用localhost/wiki/index.cgi。URL重写问题

我在尝试使用此应用程序时收到错误 - 它创建了一个链接为“http:// localhost/wiki/@ edit/index”的页面,但是当我单击该链接时,Apace正试图将“wiki/@ edit/index”作为文件提供。我怀疑我需要让Apache将/ @ edit/index传递给index.cgi。

特别是,通过index.cgi来查看它在REQUEST_URI环境变量中寻找诸如“@edit”之类的字符串。

任何想法如何解决这个问题?

回答

0

我发现这个问题,原来这是通过RewriteEngine完成的。 Pwyky将.htaccess文件放在目录中,其中包含RewriteEngine的所有设置,但由于默认情况下AllowOverride在MacOS上为“无”,因此它们被忽略。解决方法是将所有“AllowOverride”指令更改为“All”

0

你需要显示你的apache配置来说明某些事情,但似乎Apache实际上并没有使用mod_cgi来为index.cgi脚本提供服务。在你的配置中应该有'LoadModule mod_cgi'之类的东西。它应该是未注释的(即它不应该在行的开头有一个'#')。

如果你想测试这个,然后编写一个'Hello World'cgi脚本并把它(临时)放在index.cgi的位置,看看你能否运行它。让我们知道结果。

+0

CGI脚本运行,但我得到“页面未找到”错误,我认为这是因为脚本期望Apache解释URL的“http:// localhost/wiki/@ edit/index“作为对”wiki/index.cgi“脚本的调用 – 2010-10-10 03:02:43

+0

您如何知道cgi的运行?如果你得到'找不到网页'的错误,那可能是由* apache *生成的,而不是cgi,在这种情况下,cgi永远不会被调用(或者我需要更多的信息来解密)。另一种可能性是你需要一个更强大的表达式来告诉apache发送'/ wiki/*'到你的index.cgi(但这通常不是必需的)。 – jonesy 2010-10-10 03:09:14

+0

因为当我到localhost/wiki时,它给了我wiki首页(由wiki/index.cgi中的脚本生成) – 2010-10-10 14:56:25