我正在使用OSX上的内置Apache2。 我将文档根目录移动到桌面上的文件夹,并确保_www
和everyone
具有读取权限。 它工作正常,很好,PHP的作品,一切工作,直到我只添加一个.htaccess
这一行:
RewriteEngine on
只要我这样做,目录中的所有文件都是403 Forbidden:
Forbidden You don't have permission to access /dir/file.txt on this server.
Apache日志显示此错误:
[error] [client 127.0.0.1]选项FollowSymLinks或SymLinksIfOwnerMatch已closures,这意味着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>
如果我在.htaccess
文件中注释掉RewriteEngine on
,那么一切正常,除了重写规则,显然。 在OSX 10.8.5上, httpd.conf
位于/etc/apache2
文件夹中,该文件夹还包含users
单独使用的文件夹,例如uname.conf
,但是我在这里添加了符号链接。 我注意到还有一个extra
的文件夹,如httpd-userdir.conf
,但他们似乎并没有禁用任何东西。
FollowSymLinks还可以在哪里开启(或closures)?
你必须把你的选项放在一行上,或者在你的选项前面加一个+
号,这样Apache就能理解你想合并它们。 目前只有最后一个Options指令('Options Indexes MultiViews')正在被应用,因为它覆盖了所有以前的选项。
试试这个(它会覆盖“/”选项):
<Directory "/Users/uname/Desktop/localhost"> Options Indexes MultiViews FollowSymLinks SymLinksIfOwnerMatch AllowOverride All Order allow,deny Allow from all </Directory>