119

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

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

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

4

9 回答 9

158

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

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

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

  2. 添加行...

DirectoryIndex index.php

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

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

于 2010-03-05T03:48:58.293 回答
115

虽然将“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>主服务器配置文件的一个部分中进行。

于 2011-11-02T09:00:04.537 回答
48

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

DirectoryIndex index.html index.php

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

于 2010-03-05T03:54:44.653 回答
17

这可能对某人有帮助。这是来自 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。

于 2014-11-02T14:05:31.807 回答
3

这篇文章可能很旧,但我只是发布它以防它帮助其他人,我不建议在您的 Web 根目录中创建一个 .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*

我希望它可以帮助某人......快乐编码

于 2018-10-16T16:30:03.850 回答
2

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

DirectoryIndex index.php

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

于 2010-03-05T03:49:25.263 回答
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

于 2014-04-15T08:22:44.533 回答
1

这个工作就像一个魅力!

第一的

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

然后从

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

 <Files ".ht*">
    Require all granted
</Files>
于 2018-10-24T14:39:38.040 回答
0

我有类似的症状。不过,就我而言,我的白痴无意中在 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 文件自然可以解决问题。哦!

于 2018-01-05T00:19:03.457 回答