Ответ 1
Вы можете сделать это с помощью mod_rewrite
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=123.45.67.89
RewriteRule index.php$ /construction.php [R=301,L]
В основном, я пытаюсь работать с интерфейсом веб-сайта, но я бы хотел, чтобы все остальные, кроме меня, были перенаправлены на страницу строительства, если хотите. В настоящее время у меня есть:
redirect 301 /index.php http://www.domain.com/construction.php
Пока это работает, оно работает хорошо, я хотел бы иметь возможность видеть сам сайт в прямом эфире, можно ли исключить всех, кроме моего IP?
Еще раз спасибо.
Вы можете сделать это с помощью mod_rewrite
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=123.45.67.89
RewriteRule index.php$ /construction.php [R=301,L]
Перед перенаправлением вам понадобятся некоторые условия:
RewriteCond %{REMOTE_ADDR} !=1.3.3.7
RewriteCond %{REQUEST_URI} !=/construction.php
RewriteRule .* /construction.php [L]
Кроме того, чтобы убедиться, что после удаления блокировки клиенты будут видеть фактическую страницу, это решение не перенаправляет клиентов на постоянной основе (с использованием перенаправления 301), но внутренне перенаправляет. Замените 1.3.3.7
на фактический IP-адрес, который вы используете.
Если ваша версия apache 2.4 *, вы можете перенаправить посетителей на страницу строительства, используя следующие директивы в htaccess:
<If "%{REMOTE_ADDR} !='yourIp'">
RedirectMatch ^/((?!construction.php).*)$ /construction.php
</If>
Он говорит, что если ip-адрес не является yourIp, перенаправляйте все запросы на /construction.php.
В старых версиях apache вы можете использовать следующее решение на основе mod-rewrite:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^myIP$
RewriteRule !construction\.php /construction.php [L]
Это внутренне запрашивает запрос /construction.php, если встречается RewriteCondition. Вы можете заменить L на R, если вы хотите увидеть перенаправленный URL-адрес в адресной строке браузера.
Привет, вы можете сделать следующее в файле .htaccess
RewriteEngine on
# Redirect all except allowed IP
RewriteCond %{REMOTE_ADDR} !^12.345\.678\.901$
RewriteRule /index.php http://www.domain.com/construction.php [R=302,L]
размещение вашего IP вместо 12.345.678.901
Следующие работали для меня
Deny from all
Allow from xxx.xxx.xx.xxx
Если у вас есть ряд IP-адресов, которые вы хотите исключить из просмотра страницы "under construction", вы можете использовать |
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127.0.0.1|212.250.141.228
RewriteRule ! construction\.html /construction.html [R]
Важно положить две последние строки в конец вашего файла .htaccess
, особенно если в нем содержится больше правил перезаписи.
В дополнение к использованию директивы if
в качестве других предложенных ответов вы также можете добавить несколько IP-адресов, включив другие условия в одну директиву, используя оператор &&
как таковой:
<If "%{REMOTE_ADDR} != '127.0.0.1' && %{REMOTE_ADDR} != '192.168.1.1'">
RedirectMatch ^/((?!construction.php).*)$ /construction.php
</If>
Смотрите документы здесь: http://httpd.apache.org/docs/2.4/mod/core.html#if
Другая идея состоит в том, чтобы дать доступ только к определенному диапазону
RewriteEngine on
RewriteBase /
# Validator
SetEnvIf Remote_Addr "^128.30." IsInt
# Local
SetEnvIf Remote_Addr "^192\.168" IsInt
Order allow,deny
Allow from env=IsInt