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


12

我需要允许从我的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仅对从本地主机发出的请求允许访问。

任何帮助是极大的赞赏。

最好的祝福

罗伯特

Answers:


10

这是我在尝试弄清楚如何正确执行您想做的事情时写的一篇博客文章

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

    <目录“ / Users / yourUserName / Site /”>
        选项索引多视图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文件并添加:

    <VirtualHost *:80>  
        <目录/Users/yourUserName/Sites/MyWebSite.com>
            选项+关注符号链接+符号链接IfOwnerMatch
            允许全部覆盖
        </目录>
      DocumentRoot /用户/您的用户名/站点/ MyWebSite
      ServerName MyWebSite.local
    </ VirtualHost>
    
  5. 编辑/ etc / hosts文件,并将其添加到顶部:

    127.0.0.1 MyWebSite.local
    
  6. 进行符号链接,以将您的Code目录链接到Sites目录中的目录。

    ln -s〜/代码/ MyWebSite〜/ Sites / MyWebSite
    
  7. 重新启动Apache


1
欢迎来到超级用户!最好在此处包含答案的基本部分,并仅提供链接以供将来参考。
slhck

我从xampp zend环境转到默认的mac / apache设置,重新启动后陷入了困境。步骤2是关键。谢谢!
Shanimal 2012年

2

实际上,仅从Emjay的答案开始的前两个步骤以及一个Apache重新启动是必需的,这对我有用:

  1. 启用Web共享通过将在MAC 系统Prefrences - > 共享 - >检查启用Web共享

  2. 编辑username.conf位于中的文件/private/etc/apache2/users并添加FollowSymLinks指令:

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

    须藤apachectl

  4. 重新启动Apache

    sudo apachectl重新启动

现在,Apache将在您的Sites目录下提供符号链接。


1

403 forbidden出错了。解决我的问题的是httpd-vhosts.conf,我替换了下面的配置

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

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

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


0

Options FollowSymLinks 在httpd.conf中获取适当的容器

  1. 在conf中找到DocumentRoot字符串,记住它的值。检查<Directory "docroot here">...</Directory>“选项”字符串部分的内容。如果选项丢失-添加字符串Options FollowSymLinks(如果存在但没有FollowSymLinks)-添加该参数以使类似于Options Indexes FollowSymLinks。修改配置后重新启动Apache。测试结果,写在这里

  2. 阅读Apache文档


嗨,抱歉-这个答案根本没有帮助。
robertj

你有没有试过这样做呢?您在Apache配置中禁用了FollowSymLinks,则必须在站点或目录级别启用才能使用符号链接的资源
Lazy Badger

并检查〜内文件的权限,之后是否存在DirectoryIndex文件:依次解决任务,检查所有可能性
Lazy Badger

1
再说一次-我无法根据您的评论做任何事情。我是一个关于Apache的新手(除了最近6个小时的谷歌搜索),我根本不知道合适的容器是什么。真正有用的是如何配置httpd.conf和httpd-vhost.conf的具体示例。
robertj

@robertj-这是解决您问题的方法。您需要编辑该文件并进行相应的修改,如@Lazy_Badger所说。它应该位于下<Directory /usr/share/web>。请注意,之后,您需要使用sudo /usr/sbin/apachectl restart
Steven Lu

0

有时,如果发生以下情况:

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

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


这与使用OSX的OP有何关系?
2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.