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

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

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

ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here

现在,每当我发起 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>
...

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

任何帮助是极大的赞赏。

此致

罗伯特

答案1

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

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

    <目录“/Users/yourUserName/Sites/”>
        选项索引多视图FollowSymLinks
        AllowOverride 无
        命令允许、拒绝
        允许所有人
    </目录>
    
  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 /用户/你的用户名/网站/MyWebSite
      服务器名称 MyWebSite.local
    </虚拟主机>
    
  5. 编辑 /etc/hosts 文件并在顶部添加以下内容:

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

    ln -s ~/代码/MyWebSite ~/站点/MyWebSite
    
  7. 重启 Apache

答案2

事实上,只需要 Emjay 的回答中的前两个步骤加上 apache 重启,以下是对我有用的方法:

  1. 使能够Web 共享在 MAC 上,转到系统偏好设置—>分享—> 检查已启用Web 共享

  2. 编辑username.conf位于的文件/private/etc/apache2/users并添加关注符号链接指示:

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. 检查你的 apache 配置

    sudo apachectl -t

  4. 重启 Apache

    sudo apachectl 重新启动

现在 Apache 将为您的目录下的符号链接提供服务Sites

答案3

我遇到了403 forbidden错误。解决我问题的方法是httpd-vhosts.conf,我替换了以下配置

<Location "/modulename">
  Order allow,deny
  Allow from all
</Location>

<Location "/modulename">
  Require all granted
</Location>

对所有位置标签执行了相同的操作。它解决了权限问题。

答案4

有时,会发生这种情况:

  • 您的源文件夹位于 NTFS 文件系统上
  • 如果您正在使用已创建的文件夹,该文件夹具有不同的权限,可能来自以前的所有者或安装。

我通过在 ext4 文件系统上创建一个新文件夹并创建一个符号链接来解决这个问题/var/www

相关内容