.htaccess — PHP реализует страницу для обслуживания

Я хочу реализовать функцию «Отказ от обслуживания» для моего веб-сайта, но, похоже, у меня возникли некоторые проблемы. Позволь мне объяснить.

Структура моего сайта выглядит примерно так:

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>

Это, кажется, не работает, хотя. Я искал много уроков, но ни один из них не работает. Также мне было интересно, перенаправлены ли пользователи на страницу обслуживания; когда обслуживание закончится, как они будут перенаправлены на обычный веб-сайт.

заранее спасибо

-1

Решение

Если бы это был я, я бы создал каталог конфигурации с вашими значениями конфигурации. Один из них будет

$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');
}
1

Другие решения

Игнорировать .htaccess файл и переместить код прямо в index.php

if(file_exists('maintenance.flag')){
// code to render maintenance page
exit;
}

Вы можете включить / отключить режим обслуживания, создав пустой файл maintenance.flag в вашем корневом каталоге.

0

Я пришел сюда из-за php тег. Considered Рассматривали ли вы сделать это через php только?

То, что я хотел бы сделать, это наличие файла конфигурации (или базы данных) и if предложение в моем php-коде, что-то вроде:

if($config['maintenance']==true) {
include_once "maintenance.php";
} else {
// the rest of your index.php
}
0

RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteRule ^(.*)$ maintenance.html [R=302,L]

Измените имя файла на любое другое, и вы можете включить или отключить сайт, переименовав файл в это имя и обратно, например, maintenance.html перевести сайт в автономный режим и maintenance.html.bak чтобы вернуть его в онлайн.

0
По вопросам рекламы [email protected]