【问题标题】:403 Forbidden, Index of / catch 22403 Forbidden, Index of / catch 22
【发布时间】:2015-12-24 08:58:54
【问题描述】:

我在这个问题上度过了一段非常艰难的时光,并尝试了很多对某些人有效但对我无效的解决方案。首先我的设置: Ubuntu 14.04.2 阿帕奇 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>

到目前为止,我遵循了 2 套不同的建议 - 一个说将我的配置选项更改为:

Options +Indexes

但是,当我导航到我的主页时,它会为我提供物理文件夹“/ 的索引”以及我所有文件和文件夹的列表 - 这是我不想要的。所以我把它留作

Options -Indexes

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

DirectoryIndex index.php index.html

我还检查了我的文件夹权限,所有这些权限都归我的 apache 用户管理员 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

【问题讨论】:

  • 您尝试访问的 URL 是什么,您的 Apache 版本是什么??

标签: wordpress apache .htaccess config


【解决方案1】:

Forbidden 403 只是表示权限有问题。当服务器尝试访问请求的资源时,由于权限问题,它受到限制,因此建议修改Indexes 的人甚至没有关闭,因为Indexes 选项是控制目录列表。以下是关于Indexes option from Apache的摘录

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

问题的根本原因显然是“权限”。

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

  1. 试试下面的代码 sn-p。我正在尝试禁用您的 .htaccess 文件效果,看看这是否是根本原因。如果它有效,那么您可以查看 .htaccess 的所有内容以了解可能存在的问题。

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

    <Directory /var/www/dev/>
            Options -Indexes +FollowSymLinks
            AllowOverride All
    </Directory>
    

附带说明,我建议首先尝试为您的网络应用程序目录和文件执行chmod 777,因为在大多数情况下,权限问题是由于 UNIX 权限而不是 Apache 权限。


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

另外,您能否提供DirectoryIndex 指令的上下文和您正在使用的 URL。

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

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

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

尝试使用下面的exact,如果您没有包含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 的 cmets 了解更多详情。

【讨论】:

  • 谢谢@hagrawal - 有一件事要提(上面编辑)我只在第一次加载 url 时收到这些错误,如果我刷新,它会按预期将我带到我的页面。我尝试了您的建议 - 1:仍然给了我 403,刷新加载页面(如前所述),但后来我无法访问我网站上的任何其他页面(预计没有 htaccess)。 2:与最初相同的问题,即 403 和“用户代理”问题。我还没有完成看起来不安全的 chmod,但会尝试用于测试目的。所有文件夹都属于我的 ubuntu:ubuntu user:group,所以我要先尝试 chown www-data(参见上面的文件所有权编辑)
  • Apache sn-p 也很有趣,因为尽管在 htaccess 中指定了 DirectoryIndex,但我得到了格式化列表
  • 您绝对正确 - 权限问题。特别是所有权问题。我仍在调试,但我最终做的是 'chmod -R www:data' 所有 wordpress 文件和文件夹,这似乎已经解决了问题 - 仍在进行一些最终测试测试。感谢您为我指明正确的方向
  • 没问题,很高兴你的问题最终会得到解决.. :)
猜你喜欢
  • 2021-08-16
  • 2018-06-10
  • 2015-12-05
  • 2013-04-27
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
相关资源
最近更新 更多