2011-12-31 16 views
9

Chcę, aby moi goście mieli dostęp tylko do określonej części mojej witryny (bloga). Jeśli spróbują uzyskać dostęp do innych obszarów strony, chciałbym, aby zostały przekierowane do sekcji blogu..htaccess mod_rewrite Przekierowanie oparte na IP: jak przekierować cały ruch do konkretnego podkatalogu, z wyjątkiem mojego IP?

Chcę, aby to dotyczyło wszystkich osób oprócz mojego adresu IP.

więc struktura jest następująca:

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... 

Czy masz jakieś sugestie, w jaki sposób to zrobić za pośrednictwem .htaccess mod_rewrite?

Odpowiedz

18

Powinieneś być w stanie przekierować z następujących czynności:

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

dzięki @jordon - jeśli chcę dodać więcej niż jeden adres IP, jaka byłaby składnia? – pepe

+5

@torr Wystarczy skopiować pierwszą linię do innej linii i nadal je dodawać. –

+0

Myślę, że REMOTE_ADDR jest lepsze od REMOTE_HOST, aby uzyskać adres IP. REMOTE_HOST niekoniecznie zwróci adres IP, jeśli włączona jest funkcja 'HostnameLooks' (chociaż domyślnie jest wyłączona). – MrWhite

3

Należy utworzyć stronę, która obsługuje specyficzne przekierowania, a następnie edytować plik .htaccess być coś takiego:

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] 

Plik rediret_page.html może mieć przekierowanie js lub po stronie serwera, które zajmie miejsce, w którym się znajdą, ale zmusi wszystkich, którzy nie wpadli na twój adres IP, za pośrednictwem określonej strony, która obsługuje przekierowanie.

+0

do wyjaśnienia, nie chcę, aby moi użytkownicy do strony przekierowania - chcę, aby przejść do strony głównej mojego bloga (wordpress), która zazwyczaj pokazuje, jeśli ręcznie wskażę w przeglądarce 'mysite.com/blog' - robi Twój kod to przewiduje? – pepe

+0

@torr: Wszystko, co musisz zrobić, to zrobić stronę przekierowania/blog. Mogę polecić przejście przez stronę przekierowania PHP, ponieważ da ci to lepszą kontrolę, ale powinna działać tylko za pomocą/blog –

Powiązane problemy