Страница заглушка в WordPress без использования плагинов
Доброго времени суток. В данной статье хочу поделиться одним из методов перенаправления пользователей на страницу-заглушку в WordPress не используя сторонних плагинов.
При разработке сайта или выполнении технического обслуживания (бекап, обновление) сайта мы сталкиваемся с проблемой перенаправления пользователей на страницу заглушку. Как в WordPress организовать данное перенаправление не используя сторонних скриптов? Да очень просто. Используем файл .htaccess
Вот содержание стандартного .htaccess, который используется в WordPress:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
После строки RewriteEngine On добавляем следующий код:
RewriteCond %{REMOTE_ADDR} !^127.0.0.1 RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.html [R=302,L]
И в итоге наш .htaccess выглядит следующим образом:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} !^127.0.0.1 RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.html [R=302,L] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Получается все будут перенаправлены на страницу maintenance.html, кроме пользователей пришедших с адреса 127.0.0.1
Осталось создать в корне страницу maintenance.html
Если необходимо разрешить доступ с нескольких адресов, например, 127.0.0.1, 192.168.1.1 и диапазона 192.168.2.1 – 192.168.2.5, то дописываем, после RewriteCond %{REMOTE_ADDR} !^127.0.0.1
RewriteCond %{REMOTE_ADDR} !^192.168.1.1 RewriteCond %{REMOTE_ADDR} !^192.168.2.[1-5]$
Вот как теперь выглядит наш .htaccess
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} !^127.0.0.1 RewriteCond %{REMOTE_ADDR} !^192.168.1.1 RewriteCond %{REMOTE_ADDR} !^192.168.2.[1-5]$ RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.html [R=302,L] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Вот и все.
P.S. данный способ подходит не только для WordPress, т.к. настройки касаются только Apache.
А в maintenance.html какие именно коды ?
Часть комментария удалена, обвинения без доказательств.(не буду говорить, что о таких думают, сами догадаетесь). И сам ответ на вопрос. В maintenance.html вы можете добавить любой html код.