Задача
Клиент содержал доменные имена на одном хостинге, а сами сайты - на своем сервере. Поставил задачу: при недоступности сервера сайты долны вести на страницу -заглушку "Ведутся технические работы"Сделал сайт с одной станицей, на который перенаправлял бы все запросы с други доменных имен.
Но вохник вопрос как перенаправлять любые пути на эту одну страницу (ведь пользователи могут переходить не на главную страницу основного сайта, а на какие-то другие страницы/папки).
Окружение
php, apache serverРешение
Помог файл .htaccess(файл с таким именем сделал в корне сайта)
Простое решение: перенаправить все запросы на корень сайта
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.+)$ / [R=301,L]
</IfModule>
Задача чуть усложнилась, когда на странице "Технические работы" понадобилось отображать картинку. Т.к. перенаправление действовло и на картинку и сбрасывало её адрес.
Поэтому чуть усложнил скрипт. Теперь он перенаправляет все кроме картинок.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.+)$ / [R=301,L]
</IfModule>
Пока так решил вопрос. Идеи по улучшению принимаются в комментариях
Материалы по теме
htaccess - 47 наглядных примера серверного редиректа
Excluding images from mod_rewrite rule (тут взял идею по работе с картинками)
.htaccess PHP
25 правил .htaccess, которые должен знать каждый web-разработчик
20+ правил .htaccess, которые должен знать каждый разработчик
Документация по htaccess
Файл .htaccess - общая информация
Директива модуля - RewriteRule
RewriteCond Директива модуля Mod rewrite
Комментариев нет:
Отправить комментарий