嘿伙计们,我的 AWS EC2 实例遇到了一个非常奇怪的问题。我已经使用 PHP5.5 MariaDB 和 Apache2 设置了我的 LAMP 堆栈,我已经创建/启用了我的 conf 文件(如下)
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www
SetEnv APPLICATION_ENV live
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
DirectoryIndex index.html index.php
Order allow,deny
AllowOverride All
Allow from All
</Directory>
<IfModule mod_rewrite>
RewriteEngine On
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
甚至尝试在我的 webroot 中删除带有 DirectoryIndex 的 htaccess。这些似乎都不尊重我的 DirectoryIndex?有任何想法吗?mod_dir是启用的,还有mod_rewrite,你觉得这两个Apache之间能搞定吗??
您可以使用http://54.200.197.102/
检查一下,安全组设置为允许在 80 上,您可以在此处查看我的 var dub 目录结构
-rw-r--r-- 1 ubuntu ubuntu 4566 Jan 30 18:58 backup
-rw-rw-r-- 1 ubuntu ubuntu 50 Jan 30 19:10 .htaccess
-rw-rw-r-- 1 ubuntu ubuntu 12 Jan 30 19:09 index.html
-rw-rw-r-- 1 ubuntu ubuntu 4 Jan 30 18:51 index.php
htaccess的内容如下
DirectoryIndex index.php index.html
我真的很茫然吗?
它说:“作品:index.php”。
你清除浏览器缓存了吗?
Apache 将通过 DirectoryIndex 配置变量进行解析,直到找到匹配项,它会停止处理在您正在浏览的目录中找到的第一个匹配项(在您的情况下是文档根目录:/var/www)
在您的配置中,您指定了 index.html index.php 的顺序,这意味着一旦它在目录中看到 index.html 就会提供服务,如果没有,它将查找 index.php 并在找到时提供服务
如果它没有找到任何一个文档,那么它将默认为您对目录的目录索引权限或最接近的匹配,在您的情况下是允许的,因此它将显示目录内容
您已经覆盖了 .htaccess 中的 VHOST DirectoryIndex 配置(这并不罕见),以便它搜索 index.php 然后 index.html - 这是您当前看到的行为 index.php 是第一个匹配项(即使两者文件存在)
基本上选择您喜欢的文件并将另一个重命名为其他文件或删除它和/或重新配置您的 VHOST/.htaccess 文件,以便指定您喜欢的确切文件(猜测 index.php)