大家好,我的 AWS EC2 实例出现了一个非常奇怪的问题。我已经使用 PHP5.5 MariaDB 和 Apache2 设置了我的 LAMP 堆栈,并创建/启用了我的配置文件(如下)
<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
我现在真的是不知所措吗?
答案1
它显示:“作品:index.php”。
您清除了浏览器缓存吗?
答案2
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)