Редактировать: у меня была возможность поиграть с моим файлом htaccess, и я нашел решение, которое я добавил ниже.Короче говоря, я бы не стал использовать его, даже если он работает.
Оригинал:
Вы можете попробовать не перенаправлять, если вы уже перенаправили, добавивпроверка REDIRECT_STATUS:
RewriteEngine On
# redirect to landing page
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1 // my real IP would go here
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteCond %{REQUEST_URI} !/UpdatePage.html$ [NC] // stop infinite loops on itself
RewriteRule .* /UpdatePage.html [R=302,L]
Из того, что я понимаю, это будет означать: перенаправление на файл UpdatePage.html, если удаленный адрес является определенным IP-адресом, и он не был перенаправлен ранее.Я не могу проверить, приведет ли это к желаемому поведению, но я получил это из ответа на этот вопрос SO: Очистить петлю перенаправления URL .
Проверенное решение:
Я поэкспериментировал с настройкой WAMP и придумал следующее:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1 // my real IP would go here
RewriteCond %{REQUEST_URI} !/UpdatePage.html$ [NC] // stop infinite loops on itself
RewriteCond %{REQUEST_URI} ^(.+)\.html$ [NC] // Only handle html pages
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^(.+)\.html$ [NC] //don't redirect if the referer is a page. Should actually include the domain as well
RewriteRule .* /UpdatePage.html [R=302,L]
Первый раз на любой HTML-страницена сайте следует перенаправить на страницу обновления, тогда пользователь щелкнет ссылку на этой странице и перейдет на исходную страницу.Затем устанавливается переменная среды referer, и вы можете проверить, является ли она действительной, а затем не перенаправить.
Это не обрабатывает переход к корню веб-сайта.Пользователь должен загружать html-страницу напрямую.
Я очень предпочитаю ваше решение (@james).Кодирование логики в верхней части страницы PHP основного шлюза проще и намного менее подвержено ошибкам, но я решил, что попытаюсь найти способ, используя htaccess :-).Обратите внимание, что я бы никогда не использовал этот метод htaccess самостоятельно.