如何在 Mac OS X Lion 10.7.2 下允许访问我的 ~/Sites/ for Apache 中的符号链接

rob*_*rtj 12 mac apache-http-server symbolic-link macos

我需要允许从我的 Apache 访问 ~/Sites 中的符号链接目录。我像这样对目录进行符号链接

ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here
Run Code Online (Sandbox Code Playgroud)

现在每当我发起 GET 请求时,我都会收到 403 回复

curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...
Run Code Online (Sandbox Code Playgroud)

我如何告诉 Apache 允许访问符号链接目录,以及如何告诉 Apache 仅允许从本地主机发出的请求。

任何帮助是极大的赞赏。

此致

罗伯特

小智 11

这是我写的一篇博客文章,当我试图弄清楚如何做你想做的事情时。

  1. 通过转到系统偏好设置 —> 共享 —> 选中启用 Web 共享,在 MAC 上启用 Web 共享
  2. 编辑位于 /private/etc/apache2/users 的 username.conf 文件并添加“FollowSymLinks”指令:

    <目录“/Users/yourUserName/Sites/”>
        选项索引多视图 FollowSymLinks
        允许覆盖无
        命令允许,拒绝
        所有人都允许
    </目录>
    
  3. 编辑 /private/etc/apache2/httpd.conf 文件并确保“# Virtual hosts”下的行没有被注释掉,如下所示:

    包括/private/etc/apache2/extra/httpd-vhosts.conf
    
  4. 编辑 /private/etc/apache2/extra/httpd-vhosts.conf 文件并添加:

    <虚拟主机 *:80>  
        <目录 /Users/yourUserName/Sites/MyWebSite.com>
            选项 +FollowSymlinks +SymLinksIfOwnerMatch
            允许覆盖所有
        </目录>
      DocumentRoot /Users/yourUserName/Sites/MyWebSite
      服务器名称 MyWebSite.local
    </虚拟主机>
    
  5. 编辑 /etc/hosts 文件并将其添加到顶部:

    127.0.0.1 MyWebSite.local
    
  6. 创建一个符号链接,将您的代码目录链接到站点目录中的一个。

    ln -s ~/Code/MyWebSite ~/Sites/MyWebSite
    
  7. 重启apache