我正在使用 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/dev
to的所有权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"