Подтвердить что ты не робот

.htaccess перенаправляет на весь IP-адрес, кроме моего

В основном, я пытаюсь работать с интерфейсом веб-сайта, но я бы хотел, чтобы все остальные, кроме меня, были перенаправлены на страницу строительства, если хотите. В настоящее время у меня есть:

redirect 301 /index.php http://www.domain.com/construction.php

Пока это работает, оно работает хорошо, я хотел бы иметь возможность видеть сам сайт в прямом эфире, можно ли исключить всех, кроме моего IP?

Еще раз спасибо.

4b9b3361

Ответ 1

Вы можете сделать это с помощью mod_rewrite

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=123.45.67.89
RewriteRule index.php$ /construction.php [R=301,L]

Ответ 2

Перед перенаправлением вам понадобятся некоторые условия:

RewriteCond %{REMOTE_ADDR} !=1.3.3.7
RewriteCond %{REQUEST_URI} !=/construction.php
RewriteRule .* /construction.php [L]

Кроме того, чтобы убедиться, что после удаления блокировки клиенты будут видеть фактическую страницу, это решение не перенаправляет клиентов на постоянной основе (с использованием перенаправления 301), но внутренне перенаправляет. Замените 1.3.3.7 на фактический IP-адрес, который вы используете.

Ответ 3

Если ваша версия 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-адрес в адресной строке браузера.

Ответ 4

Привет, вы можете сделать следующее в файле .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

Ответ 5

Следующие работали для меня

Deny from all
Allow from xxx.xxx.xx.xxx 

Ответ 6

Если у вас есть ряд IP-адресов, которые вы хотите исключить из просмотра страницы "under construction", вы можете использовать |

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127.0.0.1|212.250.141.228
RewriteRule ! construction\.html /construction.html [R]

Важно положить две последние строки в конец вашего файла .htaccess, особенно если в нем содержится больше правил перезаписи.

Ответ 7

В дополнение к использованию директивы 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

Ответ 8

Другая идея состоит в том, чтобы дать доступ только к определенному диапазону

RewriteEngine on
RewriteBase /
# Validator
SetEnvIf Remote_Addr "^128.30." IsInt
# Local
SetEnvIf Remote_Addr "^192\.168" IsInt
Order allow,deny
Allow from env=IsInt