我正在OSX上使用内置的Apache2。我将文档根目录移到了桌面上的文件夹中,并确保_www
和everyone
具有读取权限。它可以正常工作,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>