4

我正在使用 Ubuntu 14.04.2 Apache 2.4.7

我设置了一个虚拟主机来提供文件,/var/www/dev配置文件如下所示dev.conf

<VirtualHost *:80>
    ServerAdmin ubuntu@12.234.567.89
    DocumentRoot /var/www/dev
    ServerName dev.site.com

    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /var/www/dev/>
            Options -Indexes +FollowSymLinks
            AllowOverride All
            Require all granted
    </Directory>
</VirtualHost>

我在/var/www/dev目录中有许多我不想编入索引的文件,因此该-Indexes选项

但是,我也在这里安装了 wordpress,我希望这些文件能够正确地提供给浏览器。索引文件位于index.php并且位于/var/www/dev/

我在同一个文档根目录中也有一个 .htaccess 文件,如下所示:

DirectoryIndex index.php index.html
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RedirectMatch 301 ^/terms-and-conditions\.php$ /terms-of-use
RedirectMatch 301 ^/privacy\.php$ /privacy-policy
</IfModule>

DirectoryIndex应该告诉浏览器使用该文件index.php,但我收到 403 Forbidden 错误。

我试过了:

  • 打开权限,递归更改/var/www/devto的所有权www-data:www-data
  • 添加DirectoryIndex index.php到标签dev.conf内的文件<Directory /var/www/dev/>- 选项项目的上方和下方
  • 检查mod_dir是活跃的(它是)
  • 将索引选项改回+Indexes- 当我加载我的网站时,它会显示物理文件索引
  • 当我获得 403 或目录索引时刷新浏览器将正确加载我的页面
  • 每次在浏览器中测试时清除浏览器缓存
  • 查看了我的apache2.conf文件,可以确认没有其他参考DirectoryIndex
  • 删除对 DirectoryIndex 的所有引用并将选项更改为 +Indexes - 这使得一切正常,除了用户可以看到所有文件夹的目录索引,包括我不希望他们访问的文件夹

任何帮助深表感谢!

编辑:使用 chrome 和 firefox 开发工具-如果我单击禁用缓存选项(当开发工具打开时)-站点加载正常-也许这是一个线索

编辑 2:error.log 输出这一行-

AH01276: Cannot serve directory /var/www/dev/: No matching DirectoryIndex (index.php,index.html) found, and server-generated directory index forbidden by Options directive

access.log 只显示我的浏览器详细信息 -

"GET / HTTP/1.1" 200 1462 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"
4

0 回答 0