我正在尝试发布hg存储库。我将hg 1.7.3
和hgweb
用于多个存储库。在索引页面上显示存储库名称,但是当我单击它们时,我会获得有关已断开链接的信息。 Apache错误日志说:
[Tue Feb 01 15:41:31 2011] [error] [client 10.13.3.64] script not found or unable to stat: /home/hg/webdir/index.cgienigma-reports, referer: http://hg.internal/
我试图访问路径http://hg.internal/enigma-reports/
。任何想法,我可能做错了什么?
我在网站中的配置 - 可用如下:
<VirtualHost *>
ServerName hg.internal
ScriptAlias / "/home/hg/webdir/index.cgi/"
</VirtualHost>
在index.cgi的路径中没有尾部斜杠之前。为什么需要尾随斜线?现在它看起来像一个目录,而不是一个文件,看起来非常违反直觉。
答案 0 :(得分:5)
您的ScriptAlias
行可能错误 - 错过了一个尾随斜杠。
这是必需的,因为ScriptAlias将第一部分替换为第二部分。
因此,当您的网址为:
时http://hg.internal/enigma-reports/
和apache lops的协议和主机变为:
/enigma-reports/
然后ScriptAlias匹配第一个/
并进行替换,在更新之前添加斜杠产生
/home/hg/webdir/index.cgienigma-reports/
这不是有效的脚本。
然而,当你的新斜线到位时,替换是:
/home/hg/webdir/index.cgi/enigma-reports/
将engigma-reports/
转换为PATH_INFO
CGI变量,这是脚本所看到的。