2008-11-16 5 views
12

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

if (visitors_ip <> 127.0.0.1) 
    redirectmatch ^(.*)$ http://www.example.com/under-construction.html 

Надеется, что имеет смысл ...

ответ

20

Это был бы something like:

RewriteEngine On 
RewriteBase/
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1 

RewriteCond %{REQUEST_URI} !/mypage\.html$ 

RewriteRule .* http://www.anothersite.com/mypage.html [R=302,L] 

Как Andrew указует,% { ЗАПРОС_ URI} исключает бесконечный цикл, если вы перенаправляетесь в тот же домен.

Xorax В комментарии almost 9 years later:

Вы не должны использовать REMOTE_HOST, он не сможет во многих случаях. Вы должны использовать REMOTE_ADDR.
Cf "difference between REMOTE_HOST and REMOTE_ADDR"

+0

Теперь, когда IPv6 находится на картинке, я обнаружил, что есть случаи, когда IP-адрес localhost проходит через :: 1, а не всегда 127.0.0.1 - не совсем точно, когда и почему, но обрабатывать то, что я думаю вам нужно дополнительное условие: `RewriteCond% {REMOTE_HOST}!^:: 1` Двоеточие не должны требовать экранов - не специальные символы для regex engine rewrite, я не верю. – 2012-11-18 07:57:42

+0

Вы не должны использовать REMOTE_HOST, во многих случаях это не получится. Вы должны использовать REMOTE_ADDR. https://stackoverflow.com/questions/3812166/difference-between-remote-host-and-remote-addr – Xorax 2017-08-24 13:38:07

+0

@Xorax Спасибо. Я внесла поправки в свой 9-летний ответ. – VonC 2017-08-24 13:40:44

0

Будьте осторожны с этим подходом.

Я сжег, приняв подход на основе IP, чтобы ограничить доступ, а затем потерял аренду по моему IP-адресу.

Конечно, вы всегда можете ssh в поле, о котором идет речь, и снова измените файл .htaccess, но 5 минут паники, когда вы пытаетесь выяснить, что только что произошло, не совсем весело, если вы этого не ожидаете произойдет.

Я рекомендую вместо этого использовать .htaccess (вместе с файлом htpasswd) для запроса учетных данных для доступа к вашему сайту разработки.

Хороший пример того, что здесь: http://aplawrence.com/foo-web/htaccess-authentication.html

3

Вот решение, которое я закончил с использованием, обратите внимание, что он похож на VonC, за исключением, что его вызвало бесконечный цикл, если вы выбрали для перенаправления на том же домене.

RewriteEngine On 
RewriteBase/
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1 
RewriteCond %{REQUEST_URI} !/coming-soon\.html$ 
RewriteRule .* http://www.andrewgjohnson.com/coming-soon.html [R=302,L] 

Следует также отметить, что 302 является временным шагом и должно использоваться вместо ничего или 301.

2
<IfModule mod_rewrite.c> 
RewriteEngine On 
# Redirect all except allowed IP 
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.001$ 
RewriteCond %{REMOTE_ADDR} !000\.000\.000\.002$ 
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.003$ 
RewriteRule (.*) http://YourOtherWebsite.com/$1 [R=301,L] 
</IfModule> 

до вашего WordPress IfModule этого будет перенаправлять всех, кроме адреса 3 внутрибрюшинно в вопрос.

Вы просто ftp на сайт и отредактируете файл .htaccess, если ваш IP-адрес изменился.

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