如何在Apache中更改默认的索引页面?

90

我想更改浏览网站时显示的默认网页。目前,我运行了一个报告程序,并输出名为index.html的文件。我不能更改它所调用的文件名。因此,我的着陆页面必须被称为其他名称。现在,当我浏览我的网站时,它会带我到报告页面。

从我的观察中,无论你称index.html为什么,它都会将其作为默认页面。我想将它更改为landing.html。我该如何做?

我是一个文件夹(Folding@Home)。报告程序是HFM.net。 HFM可以输出包含当前折叠统计信息的html文件。 它将该html文件命名为index。 我不想让它成为我的默认主页。 我想要一个类似菜单的着陆页面,可以选择查看我的统计信息或其他内容。 网站位于/home/tyler/Documents/hfm/website (此处有landing.html和hfm的index.html)。 Apache2位于其默认目录中。

我还在运行Ubuntu 13.04。


默认情况下,DirectoryIndex 是 index.html,但该文件不存在。只需在 /var/www/html 中创建 index.html,您就可以看到您的内容了。 - Leon
5个回答

112

我建议使用.htaccess。你只需要添加:

DirectoryIndex home.php

或者你想要的任何页面名称。

编辑:基本的htaccess教程。

  1. 在你想要更改索引文件的目录中创建.htaccess文件。
  • 没有扩展名

  • 前面加上.,以确保它是一个“隐藏”的文件

    在里面输入上面的那一行。你可能会添加很多其他的东西(AddTypes用于Web字体/媒体文件,头部缓存,gzip声明用于压缩等),但那一行声明了你的新“主页”。

  1. 设置服务器允许读取.htaccess文件(如果你的托管服务默认允许,则只需要在本地主机上进行)
假设您有权限,请转到服务器的启用站点位置。我运行一个用于开发的Debian服务器,而默认的站点设置位于Debian / Ubuntu的/etc/apache2/sites-available/default。不确定您运行什么服务器,但只需搜索“sites-available”,然后进入“default”文档即可。在那里,您将看到一个目录条目。将其修改为以下内容:
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

然后重新启动您的Apache服务器。再次说明,我不确定您的服务器,但在Debian / Ubuntu上的命令是:

sudo service apache2 restart

从技术上讲,你只需要重新加载,但我之所以重新启动是因为像那样进行完全刷新会让我感觉更安全。

完成后,您的站点应该从您的 .htaccess 文件中读取,并且您应该有一个新的默认主页!另外一件事,如果您有一个运行站点的子目录(例如管理部分或其他内容),并且您想为该目录设置不同的“主页”,您可以在该子站点的根目录中放置另一个 .htaccess 文件,它将覆盖父级中的声明。


如何使用htaccess?我的landing.html文件不在同一个目录中。 - Tyler Montney
嗯...所以我要做的是在我的根目录中创建一个名为".htaccess"的文件?我的根目录是另外一个,因为我在httpd.conf中更改了它(并且我在apache2.conf中添加了一个“Include httpd.conf”)。你所指的根目录是那个吗?请查看我在原帖中的编辑以了解我的情况。 - Tyler Montney
当我提到根目录时,我的意思是站点的根目录(在您的情况下为/home/tyler/Documents/hfm/website),而不是您的计算机。我已编辑了我的回答措辞,我可以理解这可能会被误解。 - PlantTheIdea
你重新加载了服务器吗?另外,由于你创建了一个自定义站点位置,你是否创建了一个不同于“默认”的启用站点?如果是这样,那么你需要修改它。 - PlantTheIdea
实际上现在一切都正常了。你有什么想法如何引用另一个HTML文件吗?我正在尝试在图像内部进行操作。但是我得到了404错误。{{link1:<img src =“fahlogo.png”/>}} - Tyler Montney
显示剩余6条评论

26

你也可以在apache的httpd.conf文件中设置DirectoryIndex。

CentOS将此文件保存在/etc/httpd/conf/httpd.conf中。 Debian: /etc/apache2/apache2.conf

在文本编辑器中打开文件并找到以DirectoryIndex开头的行。

要将landing.html作为默认文件加载(但如果找不到,则使用index.html),请更改此行以读取:

DirectoryIndex  landing.html index.html

1
我遇到了类似的问题。当提供http://server/appDirectory时,我得到了目录列表而不是index.html,尽管我已经...
<IfModule dir_module>
    DirectoryIndex index.php index.html 
</IfModule>

在我的httpd.conf文件中。
我的解决方案是取消注释。
LoadModule setenvif_module modules/mod_setenvif.so

在 httpd.conf 文件中的行

Apache 版本:2.4


1
在Ubuntu中,您可以在文件/etc/apache2/mods-enabled/dir.conf中添加以下内容:DirectoryIndex myhomepage.htm,然后重新启动apache服务,命令为:sudo systemctl restart apache2

1
嗨,这是一条注释,而不是一个有用的答案。请务必阅读此帮助页面 - pierpy
为什么呢?这是我唯一的解决方案。我分享了它。可能我没有解释清楚。 - Alex Sidler
因为你说“现在这并没有帮助”,而且已经有一个被接受的回答,获得了107个赞。所以,看起来像是一条评论,而不是回答原问题 :-)。我想帮助你更好地理解stackoverflow的规则! - pierpy

0
在Ubuntu中,您可以使用站点配置文件逐个站点地更新默认页面,例如:

/etc/apache2/sites-available/your.domain.conf

文件中的关键行使用相同的语法,例如我的是;

DirectoryIndex default.htm index.htm

然后不要忘记启用并重新加载:

sudo a2ensite your.domain.conf
sudo systemctl reload apache2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接