尝试在我的 Ubuntu Server 12.04 机器上启用 mercurial apache web access 后,我在访问时收到 403 Forbidden 错误http://my.site.com/mercurial带有日志:
[2012 年 9 月 4 日星期二 01:20:22] [错误] [客户端 XXXX] 服务器配置拒绝客户端:/mercurial/hgweb.cgi
我已将其添加到 /etc/apache2/sites-available/default
ScriptAliasMatch ^/mercurial(.*) /mercurial/hgweb.cgi$1 <Directory /var/www/mercurial> Options Indexes FollowSymlinks MultiViews ExecCGI Options None AllowOverride All Order allow,deny Allow from all AuthType Basic AuthName "Repositorio Mercurial" AuthUserFile /mercurial/hgusers Require valid-user </Directory>
这很奇怪,但是当尝试访问 Web 服务器文件夹时,apache 不会要求我输入密码
[web]
style = gitweb
[collections]
/mercurial/repositories = /mercurial/repositories
/mercurial/hgwebconfig.cgi (在文件系统上)
配置 = “/mercurial/hgweb.config”
我已将 /mercurial 链接到 /var/www/mercurial
如有任何建议,我们将不胜感激。
谢谢
答案1
由于您使用/mercurial
(在文件系统上)作为脚本根目录,因此您需要在那里而不是在 上进行授权配置/var/www/mercurial
,尽管符号/mercurial
链接到/var/www/mercurial
。从Options
指令文件:
即使服务器遵循符号链接,它也不会改变用于匹配
<Directory>
部分的路径名。
因此,将您的访问控制<Directory>
块移至 for /mercurial
- 并且您还需要FollowSymLinks
on /
。(顺便问一下,为什么它紧跟Options None
在其他Options
指令之后?)
符号链接使这个变得比它需要的更加复杂和混乱 - 我真的建议摆脱它并使用/var/www/mercurial
文件系统路径,这将大大简化情况。