我正在OSX上使用内置的Apache2。我将文档根目录移到了桌面上的文件夹中,并确保_wwweveryone具有读取权限。它可以正常工作,PHP可以正常工作,直到我仅在此行添加.htaccess之前,所有东西都可以工作:

RewriteEngine on


一旦执行此操作,该文件所在目录中的所有内容均被禁止使用403:

Forbidden
You don't have permission to access /dir/file.txt on this server.


Apache日志显示此错误:


[错误] [客户端127.0.0.1]选项FollowSymLinks或SymLinksIfOwnerMatch已关闭,这表示禁止RewriteRule指令:/Users/uname/Desktop/localhost/dir/filename.txt


我已通过httpd.conf并确保已启用FollowSymLinks无济于事:

DocumentRoot "/Users/uname/Desktop/localhost"
<Directory />
    Options FollowSymLinks
    Options SymLinksIfOwnerMatch
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<Directory "/Users/uname/Desktop/localhost">
    Options FollowSymLinks
    Options SymLinksIfOwnerMatch
    Options Indexes MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>


如果我在RewriteEngine on文件中将.htaccess注释掉,那么显然,除了重写规则之外,其他所有东西都可以正常工作。在OSX 10.8.5上,httpd.conf位于/etc/apache2中,该文件夹还具有users文件夹,其中包含要使用的单个文件,例如uname.conf,但是我在这里和其他地方一样添加了符号链接。我注意到还有一个extra文件夹,其中包含httpd-userdir.conf之类的文件,但它们似乎并没有禁用任何功能。

FollowSymLinks还有什么地方可以打开(或关闭)?

最佳答案

您必须将“选项”放在一行上,或者在“选项”前面添加+符号,以便Apache理解要合并它们。目前,仅应用了最后一个Options指令(“ Options Indexes MultiViews”),因为它会覆盖所有先前的Options。

试试这个(它将覆盖“ /”选项):

<Directory "/Users/uname/Desktop/localhost">
   Options Indexes MultiViews FollowSymLinks SymLinksIfOwnerMatch
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

09-03 17:30