index.php 默认不加载

问题描述 投票:0回答:10

我刚刚安装了 CentOS、Apache 和 PHP。当我访问我的网站 http://example.com/myapp/ 时,它显示“禁止”。默认情况下,它不会加载index.php 文件。

当我访问 http://example.com/myapp/index.php 时,它工作正常。

知道如何解决这个问题吗?

php apache centos apache-config
10个回答
167
投票

Apache 需要配置为将index.php 识别为索引文件。

实现这一点的最简单方法..

  1. 在您的网络根目录中创建一个 .htaccess 文件。

  2. 添加行...

目录索引index.php

这是有关此事的资源...
http://www.twsc.biz/twsc_hosting_htaccess.php

编辑:我假设 apache 配置为允许 .htaccess 文件。如果不是,你必须修改 apache 的配置文件 (httpd.conf) 中的设置


127
投票

虽然将“DirectoryIndex index.php”添加到 .htaccess 文件可能有效,

注意:

一般来说,你不应该使用.htaccess文件

这引自http://httpd.apache.org/docs/1.3/howto/htaccess.html
虽然这是指旧版本的apache,但我相信这个原则仍然适用。

将以下内容添加到您的 httpd.conf(如果您有权访问它)被认为是更好的形式,会减少服务器开销并具有完全相同的效果:

<Directory /myapp>
DirectoryIndex index.php
</Directory>

编辑: 在编辑时,v1.3 文档已关闭。 v2.4 文档(编辑时的当前版本)具有类似的立场:

一般来说,应尽可能避免使用

.htaccess
文件。您考虑放入
.htaccess
文件中的任何配置都可以在主服务器配置文件的
<Directory>
部分中有效地进行。


51
投票

我猜测目录索引设置为index.html,或某些变体,请尝试:

DirectoryIndex index.html index.php

这仍然会让index.html优先于index.php(如果您需要抛出维护页面,这会很方便)


20
投票

这可能对某人有帮助。 这是 httpd.conf 的片段(Apache 版本 2.2 windows)

# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html
    DirectoryIndex index.php
</IfModule>

现在将查找index.html文件,如果找不到,它将查找index.php。


4
投票

这篇文章可能很旧,但我只是发布它,以防它对其他人有帮助,我不建议在您的网络根目录中创建 .htaccess 文件并更改索引。我觉得还是按照步骤来比较好

  1. 转到你的apache文件夹的conf文件夹,我的是

    C:\Apache24\conf

  2. 打开名为

    的文件

    httpd.conf

  3. 转到该部分

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
    
  4. 添加index.php,如下所示

     <IfModule dir_module>
      DirectoryIndex index.html index.php
    
    </IfModule>
    

这样,它仍然选择index.html和index.php作为默认索引,但优先考虑index.html,因为index.html出现在*index.php之前。我的意思是,如果您在同一目录中同时拥有index.html和index.php,则index.html将用作默认索引,除非您在index.hml

之前编写**index.php*

我希望它能帮助别人......快乐编码


3
投票

尝试使用以下内容创建 .htaccess 文件

DirectoryIndex index.php

编辑:实际上,不是有一个“php-apache”包或者你应该与它们一起安装的东西吗?


3
投票

我也有类似的症状。但就我而言,我的愚蠢之处在于无意中在 Web 根文件夹中也有一个空的 index.html 文件。当我没有明确请求index.php时,Apache正在提供此服务而不是index.php,因为

DirectoryIndex
mods-available/dir.conf
中配置如下:

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

也就是说,在优先级列表中,“index.html”出现在“index.php”之前。从Web根目录中删除index.html文件自然就解决了这个问题。哦!


2
投票

这个就像一个魅力!

第一

<IfModule dir_module>
    DirectoryIndex index.html
     DirectoryIndex index.php
</IfModule>

然后从

<Files ".ht*">
    Require all denied
</Files>

 <Files ".ht*">
    Require all granted
</Files>

1
投票

阅读完所有这些并尝试修复它后,我在 ubuntu 论坛上得到了一个简单的解决方案(https://help.ubuntu.com/community/ApacheMySQLPHP)。问题出在 libapache2-mod-php5 模块上。这就是浏览器下载index.php 文件而不是显示网页的原因。执行以下操作。如果 sudo a2enmod php5 返回模块不存在,则问题出在 libapache2-mod-php5 上。使用命令 sudo apt-get --purge remove libapache2-mod-php5 清除删除模块然后再次安装它 sudo apt-get install libapache2-mod-php5


0
投票

我在 Ubuntu 22.04 上也遇到了类似的问题。

默认的 WordPress 安装执行到 /var/www/html

我补充:

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    DirectoryIndex index.php
</Directory>

到我的 /etc/apache2/apache2.conf 文件

这解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.