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

时间:2014-03-24 22:09:08

标签: apache mod-rewrite apache2 symlink httpd.conf

我正在使用OSX上的内置Apache2。我将文档根目录移动到桌面上的文件夹中,并确保_wwweveryone具有读取权限。它运行良好,非常好,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 已关闭,这意味着 RewriteRule 指令被禁止:/ Users / UNAME /桌面/本地主机/目录/ 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吗?

2 个答案:

答案 0 :(得分:4)

您必须将选项放在一行,或在选项前添加+符号,以便Apache知道您要合并它们。目前只应用最后一个Options指令('Options Indexes MultiViews'),因为它覆盖了所有先前的选项。

尝试此操作(将覆盖'/'选项):

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

答案 1 :(得分:0)

我在获取403时遇到问题,我的解决方案是更改我的重写规则。我的完整指令如下:

element.all(by.css(".image-holder")).click();