Apache: развертывание нового сайта на сервере - PullRequest
0 голосов
/ 15 ноября 2009

У меня есть сайт, который сейчас находится на домене. Я хотел бы переключить его на новый сайт, который в данный момент находится в защищенном паролем подкаталоге на этом сервере.

У меня есть страница "Обслуживание сайта в процессе". Я хочу установить Apache, чтобы он отображал это по умолчанию вместо «index.php». Кроме того, я хотел бы, чтобы все остальное на сервере было защищено паролем во время переключения (хотя это не обязательно, я думаю).

Я добавил это в файл .htaccess в public_html:

DirectoryIndex siteDown.php

К сожалению, это ничего не делает. Я могу просто перейти на http://www.example.com/siteDown.php.

Я на настройке общего хостинга. Может ли это быть проблемой?

Ответы [ 3 ]

1 голос
/ 15 ноября 2009

Общие хосты, как правило, имеют какую-то панель управления, позволяющую включить обработку .htaccess.

Вы должны использовать правила mod_rewrite, поскольку индекс каталога будет обрабатывать только те записи, которые заканчиваются на

http://www.example.com/

http://www.example.com/this_other_page.html все равно будет работать нормально, даже если вы изменили DirectoryIndex.

Кроме того, вам действительно следует выдавать ошибку 503, поскольку сканирующие боты, кэши и другие объекты могут пытаться кэшировать эту страницу как «являющуюся» вашим сайтом.

0 голосов
/ 03 февраля 2010

Почему бы вам не добавить что-то в начало страницы 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;
}
0 голосов
/ 15 ноября 2009

Некоторые общие хосты не разрешают .htaccess. Проверьте TOS вашего хостинга, чтобы узнать, разрешены ли они, или поместите некоторый «мусор» (например, «asdasdasd») в ваш .htaccess. Если ваша страница загружается нормально, сервер их не читает. Если вы получили внутреннюю ошибку сервера (500), она активируется.

Если у вас не включен .htaccess, вы можете выполнить перенаправление с помощью php. В первых строках вашего index.php:

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

Это не лучшее решение, но оно работает как задумано. И если структура вашего сайта всегда основана на строках запроса index.php (например, index.php?page=home), он работает на всех страницах.

...