我正在使用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] Options 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>
如果我在.htaccess文件中注释掉RewriteEngine on,那么除了重写规则其他一切正常。在OSX 10.8.5上,httpd.conf文件位于/etc/apache2目录下,该目录中还有一个名为users的文件夹,其中包含用户的各个配置文件,如uname.conf,但我已经像在其他文件夹中一样添加了符号链接。我注意到还有一个extra文件夹,里面有像httpd-userdir.conf之类的文件,但它们似乎没有禁用任何东西。
FollowSymLinks在哪里可以被打开或关闭?
FollowSymLinks
和SymLinksIfOwnerMatch
不应该同时使用,因为它们的行为不同,Apache如何同时遵循两者。 - god_is_love