2009-11-15 52 views
0

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

我有一个“网站维护中”页面。我想设置Apache,以便默认显示,而不是“index.php”。另外,我希望在开关时保护服务器上的所有其他设备(虽然这不是必需的,但我猜)。

public_html已将此添加到.htaccess文件:

DirectoryIndex siteDown.php 

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

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

回答

1

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

你应该使用mod_rewrite的规则,因为这最终成为

http://www.example.com/

http://www.example.com/this_other_page.html目录索引将只处理条目仍将工艺精细,即使你可能已修改的DirectoryIndex。

另外,你真的应该成为一个503错误,爬行机器人,高速缓存和其他实体可以尝试缓存该页面为“是”您的网站。

+0

如何为一个503错误? – 2009-11-15 18:08:13

+0

http://php.net/manual/en/function.header.php(见最后一页) – Daniel 2009-11-22 20:31:01

0

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

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

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

这不是最好的解决方案,但它的工作原理如下。如果您的网站结构始终基于index.php querystrings(如index.php?page=home),它可以在所有页面上运行。

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; 
}