URL重写问题
我有一个CGI脚本(叫做pwyky),我把它命名为index.cgi,放在wiki/这个文件夹里,并设置了Apache,让它在我访问localhost/wiki的时候调用localhost/wiki/index.cgi。
但是当我尝试使用这个应用时,出现了一些错误——它创建了一个链接,比如“http://localhost/wiki/@edit/index”,但是当我点击这个链接时,Apache却试图把“wiki/@edit/index”当作一个文件来处理。我怀疑我需要让Apache把/@edit/index传递给index.cgi。
具体来说,在查看index.cgi的代码时,它在寻找REQUEST_URI这个环境变量中的“@edit”这样的字符串。
有没有什么办法可以解决这个问题?
2 个回答
0
要确定这一点,你需要展示一下你的Apache配置,但看起来Apache并没有使用mod_cgi来运行index.cgi这个脚本。在你的配置文件中应该有类似于'LoadModule mod_cgi'的内容。这个内容前面应该没有'#',也就是说这一行不能被注释掉。
如果你想测试一下,可以写一个简单的'Hello World' cgi脚本,然后暂时把它放在index.cgi的位置,看看能不能成功运行。运行结果告诉我们一下。
0
我找到了问题,原来是通过RewriteEngine来处理的。Pwyky把.htaccess文件放在了目录里,里面有RewriteEngine的所有设置。但是因为在MacOS上默认的AllowOverride是“None”,所以这些设置被忽略了。解决办法就是把所有的“AllowOverride”指令改成“All”。