Я хочу реализовать функцию «Отказ от обслуживания» для моего веб-сайта, но, похоже, у меня возникли некоторые проблемы. Позволь мне объяснить.
Структура моего сайта выглядит примерно так:
websitename
model
view
controller
public
css
.htaccess
index.php
.htaccess
index.php
maintenance.php
Я использую этот код htaccess для перенаправления пользователей на страницу обслуживания. Код файла .htaccess находится в общей папке.
<IfModule mod_rewrite.c>
RewriteEngine On
#handle the redirect to maintenance
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteRule .* /maintenance.php [R=302,L]# handle home page
RewriteRule ^/?$ home [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
# RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Это, кажется, не работает, хотя. Я искал много уроков, но ни один из них не работает. Также мне было интересно, перенаправлены ли пользователи на страницу обслуживания; когда обслуживание закончится, как они будут перенаправлены на обычный веб-сайт.
заранее спасибо
Если бы это был я, я бы создал каталог конфигурации с вашими значениями конфигурации. Один из них будет
$config['maintenance'] = false;
$config['maintenance_url'] = '/maintenance/';
и когда вы хотите перейти в режим обслуживания, вам нужно только обновить значение обслуживания файла конфигурации
$config['maintenance'] = true;
и в вашем переднем контроллере, или в индексном файле есть проверка
if($config['maintenance'])
{
header('Location: ' . $config['maintenance_url'] );
// in the event page cannot redirect
die('Under maintenance, please come back later');
}
Игнорировать .htaccess
файл и переместить код прямо в index.php
if(file_exists('maintenance.flag')){
// code to render maintenance page
exit;
}
Вы можете включить / отключить режим обслуживания, создав пустой файл maintenance.flag
в вашем корневом каталоге.
Я пришел сюда из-за php
тег. Considered Рассматривали ли вы сделать это через php
только?
То, что я хотел бы сделать, это наличие файла конфигурации (или базы данных) и if
предложение в моем php-коде, что-то вроде:
if($config['maintenance']==true) {
include_once "maintenance.php";
} else {
// the rest of your index.php
}
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteRule ^(.*)$ maintenance.html [R=302,L]
Измените имя файла на любое другое, и вы можете включить или отключить сайт, переименовав файл в это имя и обратно, например, maintenance.html
перевести сайт в автономный режим и maintenance.html.bak
чтобы вернуть его в онлайн.