403 Forbidden,Index of / catch 22

时间:2015-09-26 18:32:58

标签: wordpress apache .htaccess config

我在这个问题上度过了非常艰难的时期,并尝试了大量的解决方案,这些解决方案对某些人有用但对我不起作用。首先是我的设置: Ubuntu 14.04.2 Apache 2.4.7

我正在将我的网站迁移到wordpress到文件夹结构/ var / www / dev,它被设置为虚拟主机 - dev.conf看起来像:

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    ServerAdmin ubuntu@12.345.678.90
    DocumentRoot /var/www/dev
    ServerName dev.mysite.com

    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /var/www/dev/>
            Options -Indexes +FollowSymLinks
            AllowOverride All
            #Require all granted
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>

我的问题是,当我第一次在浏览器中访问我的主页dev.mysite.com时,它会将我引导到403页面:

Forbidden 
You don't have permission to access / on this server.

我的根文件夹中还有一个.htaccess文件,目前看起来像这样:

DirectoryIndex index.php index.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

到目前为止,我遵循了两组不同的建议 - 其中一条建议将配置选项更改为:

Options +Indexes

然而,当我导航到我的主页时,它为我提供了物理文件夹“Index of /”,其中包含我所有文件和文件夹的列表 - 这是我不想要的。所以我把它留作了

Options -Indexes

另一组建议说将此添加到htaccess文件中:

DirectoryIndex index.php index.html

我还检查了我的文件夹权限,全部归我的apache用户admin ubuntu所有:ubuntu并且都遵循标准的wordpress文件夹权限,例如所有文件夹都是755,所有文件都是644(粗略的经验法则)。

我也尝试过使用新的apache 2.4标准

,你可以看到(上面已经注释掉)
Require all granted 

而不是

Order allow,deny
allow from all

我每次进行更改时都会重新启动服务器,所以没什么可傻的。我在上面的配置中做了什么,不让我加载我的网站?

具体来说,我的主页转到403 Forbidden,任何其他页面,例如dev.mysite.com/features加载此错误消息:

User-agent: *
Disallow: /wp-admin/

编辑: 上述问题仅在最初加载url时发生 - 如果我刷新它应该加载的页面。

这是我的文件所有权结构 - 也许这可能有用:

-rw-rw-r--  1 ubuntu   ubuntu       350 Sep 26 19:35 .htaccess
-rw-rw-r--  1 ubuntu   ubuntu      4951 Sep  9 13:21 wp-activate.php
drwxrwxr-x  9 ubuntu   ubuntu      4096 Sep  9 13:21 wp-admin
-rw-rw-r--  1 ubuntu   ubuntu       271 Sep  9 13:21 wp-blog-header.php
-rw-rw-r--  1 ubuntu   ubuntu      5007 Sep  9 13:21 wp-comments-post.php
-rw-rw-r--  1 ubuntu   ubuntu      3130 Sep 24 10:32 wp-config.php
-rw-rw-r--  1 ubuntu   ubuntu      2764 Sep 16 17:23 wp-config-sample.php
drwxrwxr-x  6 ubuntu   ubuntu      4096 Sep 24 10:46 wp-content
-rw-rw-r--  1 ubuntu   ubuntu      3286 Sep 16 17:23 wp-cron.php
drwxrwxr-x 12 ubuntu   ubuntu      4096 Sep  9 13:21 wp-includes
-rw-rw-r--  1 ubuntu   ubuntu      2380 Sep  9 13:21 wp-links-opml.php
-rw-rw-r--  1 ubuntu   ubuntu      3123 Sep  9 13:21 wp-load.php
-rw-rw-r--  1 ubuntu   ubuntu     34669 Sep 16 17:23 wp-login.php
-rw-rw-r--  1 ubuntu   ubuntu      8252 Sep  9 13:21 wp-mail.php
-rw-rw-r--  1 ubuntu   ubuntu     11062 Sep 16 17:23 wp-settings.php
-rw-rw-r--  1 ubuntu   ubuntu     25124 Sep 16 17:23 wp-signup.php
-rw-rw-r--  1 ubuntu   ubuntu      4035 Sep  9 13:21 wp-trackback.php
-rw-rw-r--  1 ubuntu   ubuntu      3055 Sep 16 17:23 xmlrpc.php

1 个答案:

答案 0 :(得分:1)

Forbidden 403只是意味着权限存在问题。当服务器尝试访问所请求的资源时,由于权限问题而受到限制,因此那些建议修改Indexes的人甚至没有关闭,因为Indexes选项是控制目录清单。以下是关于Indexes option from Apache

的摘录
  

如果请求映射到目录的URL但没有   然后,该目录中的DirectoryIndex(例如,index.html)   mod_autoindex将返回目录的格式化列表。

显然,您的问题的根本原因是&#34;权限&#34;。

现在,对于解决方案部分 - 因为我不知道您.htaccessdev.conf的所有内容,所以低于您的一步一步的方法:

  1. 请尝试以下代码段。我正在尝试停用您的.htaccess文件效果,看看是否有根本原因。如果有效,那么您可以查看.htaccess的所有内容以查找可能的问题。

    <Directory /var/www/dev/>
            Options -Indexes +FollowSymLinks
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>
    
  2. 请尝试以下代码段。 Directory的默认Apache访问权限是Allow from All,所以我删除了它,让默认生效,没有排序..无论如何你也尝试了同样的事情..

    <Directory /var/www/dev/>
            Options -Indexes +FollowSymLinks
            AllowOverride All
    </Directory>
    
  3. 另外,我建议您首先尝试为您的网络应用目录和文件执行chmod 777,因为在大多数情况下,权限问题是由于UNIX权限而非Apache权限。

    <小时/>

    后续编辑:
    为了进一步调试,我们需要服务器错误信息,您是否可以启用最大调试并从error.logaccess.log获取内容(如果从ssl日志进行HTTPS访问)。 Reference

    另外,您能否提供您正在使用的DirectoryIndex指令和网址的背景信息。

    所有可能性都是您有权限问题,可能是因为Apache或UNIX。

    因此,让我们首先全面排除UNIX权限问题,因此暂时为您的Web应用程序资源试用chmod 777,如果它有效,我们知道它是UNIX权限问题,我们将看到下一步该做什么。

    我对RewriteBase /文件中的RewriteRule . /index.php [L].htaccess持怀疑态度。
    尝试RewriteBase /var/www/dev或您认为可能更相关但不是/的任何内容 另外,请尝试使用RewriteRule,然后尝试使用index.php的绝对路径,因此请使用RewriteRule . /var/www/dev/<<XYZ>>/index.php

    尝试使用下面的精确内容,如果您没有包含mod_cgi模块,那么您可能需要。

    <Directory "/home/domain/www">
            Options +Indexes FollowSymLinks +ExecCGI
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>
    

    <小时/>

    最终解决方案:

    对于那些正在寻找解决方案的人 - 一旦OP使用chmod -R www:data递归授予权限,他就可以解决这个问题。因此,总结一下 - 这个问题不是因为Apache配置,而是因为UNIX权限。请阅读下面的OP评论,了解更多详情。