打开 RewriteEngine 会产生 403 错误——如何打开 FollowSymLinks?

bre*_*ine 5 apache mod-rewrite symlink apache2 httpd.conf

我正在 OSX 上使用内置的 Apache2。我将文档根目录移动到桌面上的一个文件夹中,并确保它_www具有everyone读取权限。它工作得很好,很棒,PHP 工作,一切工作正常,直到我.htaccess仅添加以下行:

RewriteEngine on
Run Code Online (Sandbox Code Playgroud)

一旦我这样做,包含该文件的目录中的所有内容都是 403 Forbidden:

Forbidden
You don't have permission to access /dir/file.txt on this server. 
Run Code Online (Sandbox Code Playgroud)

Apache 日志显示此错误:

[错误] [客户端 127.0.0.1] 选项FollowSymLinksSymLinksIfOwnerMatch已关闭,这意味着禁止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>
Run Code Online (Sandbox Code Playgroud)

RewriteEngine on如果我在文件中注释掉.htaccess,那么显然除了重写规则之外,一切都正常。在 OSX 10.8.5 上,httpd.conf位于其中还包含包含供使用的各个文件的/etc/apache2文件夹,例如,但我在这里添加了与其他相同的符号链接。我注意到还有一个包含类似文件的文件夹,但它们似乎没有禁用任何内容。usersuname.confextrahttpd-userdir.conf

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

cod*_*der 5

您必须将选项放在一行上,或者+在选项前面添加一个符号,以便 Apache 知道您想要合并它们。目前,仅应用最后一个选项指令(“选项索引多视图”),因为它会覆盖所有先前的选项。

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

<Directory "/Users/uname/Desktop/localhost">
   Options Indexes MultiViews FollowSymLinks SymLinksIfOwnerMatch
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)