Мне нужно перенаправить все запросы на страницу обслуживания, кроме определенного URL-адреса, который все еще может дать мне возможность получить доступ к обычному веб-сайту.
Я погуглил, но ничего не нашел.
Прямо сейчас я перенаправляю с помощью:
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{REQUEST_FILENAME} !/maintenance.html
RewriteRule ^.*$ /maintenance.html [L]
Обычно (потому что теперь это закомментировано) я использую Tomcat 6 за Apache с jk_mod:
<IfModule mod_jk.c>
JkMount / worker1
JkMount /* worker1
</IfModule>
Но как предоставить возможность доступа к обычному веб-сайту через определенный URL-адрес?
1) Вы можете сделать условие перезаписи неприменимым, если IP-адрес запроса принадлежит вам.
Такие как:
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteCond %{REMOTE_ADDR} !^87\.65\.43\.21$
RewriteCond %{REQUEST_URI} !^sorry\.html
RewriteRule .* /sorry.html
2) Если у вас нет статического IP-адреса или чего-либо еще, что можно однозначно идентифицировать, тогда другой вариант - использовать VirtualHost с другим портом, например 81, через который вы пропускаете трафик, вместо того, чтобы отказываться от страницы обслуживания.
3) Если вы не можете установить другой порт или это может быть даже лучше, настройте VirtualHost с другим именем сервера с помощью директивы ServerName. Вам даже не нужно устанавливать это имя на DNS-сервере, вы можете просто добавить его в файл hosts вашего компьютера.