Apache:将新站点部署到服务器

时间:2009-11-15 17:59:47

标签: apache deployment indexing shared-hosting

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

我有一个“正在进行的网站维护”页面。我想设置Apache,因此它默认显示而不是“index.php”。另外,我想在切换时对服务器上的其他所有内容进行密码保护(虽然这不是必需的,但我猜)。

我将其添加到.htaccess中的public_html文件中:

DirectoryIndex siteDown.php

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

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

3 个答案:

答案 0 :(得分:1)

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

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

的条目

http://www.example.com/

即使您可能修改了DirectoryIndex,

http://www.example.com/this_other_page.html仍然可以正常处理。

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分: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;
}