2012-01-24 2 views
24

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

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

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

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

ответ

53

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

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

избили меня на 30 секунд :-) –

+1

Как насчет добавления IP-адресов, как список IP-адресов? – BenRacicot

+0

@BenRacicot: Попробуйте что-то вроде этого: http://stackoverflow.com/questions/11653461/redirect-a-range-of-ips-using-rewritecond – kufi

3

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

23

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

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

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

1

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

Deny from all 
Allow from xxx.xxx.xx.xxx 
+0

Это только отрицает доступ, он не перенаправляет клиента по запросу пользователя. – jdgregson

3

Если апач версия 2.4 *, Вы можете перенаправить посетители, на строительной странице, используя следующие директивы в HTAccess:

<If "%{REMOTE_ADDR} !='yourIp'"> 
RedirectMatch ^/((?!construction.php).*)$ /construction.php 
</If> 

Он говорит, что если ip-адрес не yourIp перенаправить все заявки на /construction.php.

На старых версиях Apache, вы можете использовать следующий мод-перепишет решение на основе:

RewriteEngine on 

RewriteCond %{REMOTE_ADDR} !^myIP$ 
RewriteRule !construction\.php /construction.php [L] 

Это внутренне forwords запроса /construction.php если RewriteCondition встречается. Вы можете заменить L на R, если вы хотите увидеть перенаправленный URL-адрес в адресной строке браузера.

+1

Ты мужчина :) Единственное решение, которое сработало. –

0

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

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

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

0

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

Смежные вопросы