0

我有一个网站目前住在一个域上。我想将其切换到一个新站点,该站点当前位于此服务器上受密码保护的子目录中。

我有一个“正在进行的站点维护”页面。我想设置 Apache,以便默认显示它而不是“index.php”。另外,我希望在进行切换时服务器上的所有其他内容都受到密码保护(尽管我猜这不是必需的)。

我将此添加到.htaccess文件中public_html

DirectoryIndex siteDown.php

不幸的是,这没有任何作用。我可以导航到http://www.example.com/siteDown.php就好了。

我正在使用共享主机设置。这会是个问题吗?

4

3 回答 3

1

共享主机通常具有某种控制面板,允许您打开 .htaccess 处理。

您应该使用 mod_rewrite 规则,因为目录索引只会处理最终为

http://www.example.com/

http://www.example.com/this_other_page.html仍然可以正常处理,即使您可能已经修改了 DirectoryIndex。

此外,您确实应该提供 503 错误,因为爬网机器人、缓存和其他实体可能会尝试将该页面缓存为“成为”您的网站。

于 2009-11-15T18:05:45.943 回答
0

为什么不在 index.php 页面的头部添加一些内容,例如:

if($site_down == TRUE)
{
    print "My site is down";
}

然后将变量存储在适合您情况的最佳位置,例如数据库或平面文件。如果您将此标志放入数据库中,您甚至可以设置诸如定期维护和要显示的有用消息之类的内容。这将适用于任何使用 MySQL 和 PHP 的托管帐户,并且在您需要关闭时非常有用。您不必移动任何文件。

以下是非常粗略的伪代码,所以不要复制和粘贴,但这会告诉你这个想法:

$sql = "SELECT * FROM site_maintenance WHERE down_start >= NOW() AND down_end <= NOW() ORDER BY down_start ASC, down_end ASC LIMIT 1;";
// GET YOUR RESULT SET 
if( COUNT($result) == 1 )
{
    print "Site Down: {$row->reason}";
    exit;
}
于 2010-02-03T20:32:21.193 回答
0

一些共享主机不允许 .htaccess。检查您的主机的 TOS 以查看它们是否被允许,或者在您的 .htaccess 中放入一些“垃圾”(如“asdasdasd”)。如果您的页面加载正常,则服务器没有读取它们。如果您收到内部服务器错误 (500),它将被激活。

如果您没有启用 .htaccess,您可以使用 php 进行重定向。在 index.php 的第一行:

header("Location: http://domain.com/siteDown.php");
exit();

这不是最好的解决方案,但它可以按预期工作。如果您的网站结构始终基于 index.php 查询字符串(如index.php?page=home),它适用于所有页面。

于 2009-11-15T18:07:32.710 回答