2011-12-31 2 views
9

Я хочу, чтобы мои посетители имели доступ только к определенной части моего сайта (блога). Если они попытаются получить доступ к другим областям веб-сайта, я бы хотел, чтобы они перенаправлялись в раздел блога..htaccess mod_rewrite Перенаправление на основе IP: как перенаправить весь трафик на конкретный подкаталог, кроме моего IP?

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

Так структура выглядит следующим образом:

mysite.com/blog // visitor access allowed

mysite.com  // redirect to mysite.com/blog 

mysite.com/forum // redirect to mysite.com/blog 

mysite.com/tools // redirect to mysite.com/blog 

etc... 

У Вас есть предложение о том, как сделать это с помощью .htaccess mod_rewrite?

ответ

18

Вы должны быть в состоянии перенаправлять со следующим:

RewriteCond %{REMOTE_HOST} !^123\.456\.789 
RewriteCond %{REQUEST_URI} !^/blog/? 
RewriteCond %{REQUEST_URI} /(.*)$ 
RewriteRule (.*) /blog [R=301,L] 
+0

thanks @jordon - если я хочу добавить несколько IP-адресов, что бы синтаксис был? – pepe

+5

@torr Просто скопируйте первую строку в другую строку и продолжайте добавлять их. –

+0

Я думаю, что REMOTE_ADDR предпочтительнее REMOTE_HOST, чтобы получить IP-адрес. REMOTE_HOST не обязательно будет возвращать IP-адрес, если включен параметр «HostnameLookups» (хотя по умолчанию это отключено). – MrWhite

3

Вы должны создать страницу, которая обрабатывает конкретные редирект, а затем отредактировать файл Htaccess, чтобы быть что-то вроде этого:

Options +FollowSymlinks 
RewriteEngine on 
#not your IP 
RewriteCond %{REMOTE_HOST} !^123\.123\.123\.123 
#make sure the rule allows everyone to access the redirect page 
RewriteCond %{REQUEST_URI} !/redirect_page\.html$ 
#Send them to the redirect page 
RewriteRule \.html$ /redirect_page.html [R=302,L] 

Rediret_page.html может иметь либо js, либо перенаправление на стороне сервера, которое обрабатывает, где они заканчиваются, но это заставит всех, кто не пришел на ваш IP-адрес, через определенную страницу, которая обрабатывает перенаправление.

+0

, чтобы уточнить, я не хочу, чтобы мои пользователи перенаправляли страницу - я хочу, чтобы они перешли на главную страницу моего блога (wordpress), которая обычно показывает, что я вручную указываю браузер на 'mysite.com/blog' - делает ваш код обеспечивает это? – pepe

+0

@torr: Все, что вам нужно сделать, это сделать страницу переадресации/блог. В любом случае, я бы рекомендовал переходить на страницу перенаправления PHP, так как это даст вам лучший контроль, но это должно работать только с использованием/blog –

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