index.php默认不加载


Answers:


153

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

实现此目的的最简单方法

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

  2. 添加行...

DirectoryIndex index.php

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

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


4
它可能应该在apache加载的php.conf文件中。
staticsan

我认为您的意思是php.ini。无论如何,他的Apache并没有将index.php识别为目录索引文件。是否处理php文件是另一个apache配置问题。
John Himmelman 2010年

1
不要忘记重启Apache!像我一样!:/
Navid Einackchi 2015年

102

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

注意:

通常,您永远不要使用.htaccess文件

引用自http://httpd.apache.org/docs/1.3/howto/htaccess.html
尽管这是指apache的较旧版本,但我认为该原则仍然适用。

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

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

4
如果您可以访问该文件
那就太好了,很花俏

1
+1。除非您无权访问httpd.conf,否则这是首选方法。
马修·约翰逊

如果您使用的是HTTPS,我相信将其添加到default-ssl配置文件中也可以。
亚历克斯W

44

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

DirectoryIndex index.html index.php

这样仍会给index.html优先于index.php的优先级(如果您需要抛出一个维护页面,则非常方便)


我的看起来像这样,但是不幸的是正在下载index.php而不是执行它。
网络

@Webnet那么你应该考虑改变类型和LoadModules到PHP所以阅读PHP [ stackoverflow.com/questions/5121495/...
Merey努尔兰

15

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


3

尝试使用以下命令创建.htaccess文件

DirectoryIndex index.php

编辑:其实,没有'php-apache'软件包或您应该同时安装的软件包吗?


3

我在直接管理托管网站上的网站也遇到了同样的问题。我加了

DirectoryIndex index.php

作为自定义的httd扩展名(将代码添加到站点httpd文件中),然后该站点将index.php默认运行。


2

对我来说也是一样。我的解决方案是,在我的VirtualHost文件中读取指令时,未启用mod_dir并且apache2没有发出错误:

DirectoryIndex index.html

使用命令:

sudo a2enmod dir
sudo sudo service apache2 restart

解决了该问题。


1
我想你的意思是a2enmod
TR_SLimey

1

有关信息:在某些Apache2 conf中,您必须在mods_enabled / dir.conf中添加DirectoryIndex命令(它不在apache2.conf中)


1

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


1

我有类似的症状。但就我而言,我的愚蠢行为是在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文件自然可以解决该问题。天哪!


1

有关Ubuntu 16.04.4 LTS和Apache / 2.4.18的逐步说明和完整说明

sudo -s

cd /etc/apache2/mods-enabled

vi dir.conf”,然后将Directory.php移到DirectoryIndex之后,如下所示,然后保存文件,然后重新启动apache服务器。

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

service apache2 restart

如果您没有看到dir.conf,则需要加载它(有关如何操作,请使用Google)

做完了


1

这篇文章可能很旧,但我只是在发布它以防其他人使用,我不建议在您的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.hml之前写** index.php *,否则 index.html将用作默认索引。

希望对您有所帮助...快乐编码


1

这个作品就像一种魅力!

第一

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

然后从

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

 <Files ".ht*">
    Require all granted
</Files>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.