我的网站目前有一个网站。我想将其切换到一个新站点,该站点当前位于此服务器上受密码保护的子目录中。
我有一个“正在进行的网站维护”页面。我想设置Apache,因此它默认显示而不是“index.php”。另外,我想在切换时对服务器上的其他所有内容进行密码保护(虽然这不是必需的,但我猜)。
我将其添加到.htaccess
中的public_html
文件中:
DirectoryIndex siteDown.php
不幸的是,这没有做任何事情。我可以导航到http://www.example.com/siteDown.php
就好了。
我正在使用共享主机设置。这可能是个问题吗?
答案 0 :(得分:1)
共享主机,通常有某种控制面板,允许您打开.htaccess处理。
您应该使用mod_rewrite规则,因为目录索引只会处理最终为
的条目 即使您可能修改了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;
}