我需要允许从我的 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
这是一篇博客文章当我试图弄清楚如何做你正在尝试做的事情时,我写下了这篇文章。
- 在 MAC 上启用 Web 共享,方法是进入系统偏好设置 —> 共享 —> 选中启用 Web 共享
编辑位于 /private/etc/apache2/users 的 username.conf 文件并添加“FollowSymLinks”指令:
<目录“/Users/yourUserName/Sites/”> 选项索引多视图FollowSymLinks AllowOverride 无 命令允许、拒绝 允许所有人 </目录>
编辑 /private/etc/apache2/httpd.conf 文件并确保“# Virtual hosts” 下的行没有被注释掉,如下所示:
包括 /private/etc/apache2/extra/httpd-vhosts.conf
编辑 /private/etc/apache2/extra/httpd-vhosts.conf 文件并添加:
<虚拟主机 *:80> <目录 /Users/yourUserName/Sites/MyWebSite.com> 选项 +FollowSymlinks +SymLinksIfOwnerMatch 允许覆盖全部 </目录> DocumentRoot /用户/你的用户名/网站/MyWebSite 服务器名称 MyWebSite.local </虚拟主机>
编辑 /etc/hosts 文件并在顶部添加以下内容:
127.0.0.1 我的网站.本地
创建一个符号链接,将您的代码目录链接到站点目录中的目录。
ln -s ~/代码/MyWebSite ~/站点/MyWebSite
重启 Apache
答案2
事实上,只需要 Emjay 的回答中的前两个步骤加上 apache 重启,以下是对我有用的方法:
使能够Web 共享在 MAC 上,转到系统偏好设置—>分享—> 检查已启用Web 共享
编辑
username.conf
位于的文件/private/etc/apache2/users
并添加关注符号链接指示:<Directory "/Users/yourUserName/Sites/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
检查你的 apache 配置
sudo apachectl -t
重启 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
。