2011-12-31 15 views
9

Desidero che i miei visitatori abbiano accesso solo a una parte specifica del mio sito Web (blog). Se provano ad accedere ad altre aree del sito web, mi piacerebbe che fossero reindirizzati alla sezione del blog..htaccess mod_rewrite Reindirizzamento basato su IP: come reindirizzare tutto il traffico verso una sottodirectory specifica, ad eccezione del mio IP?

Voglio anche che questo si applichi a tutti tranne che al mio indirizzo IP.

Quindi la struttura è la seguente:

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

Hai un suggerimento su come farlo tramite mod_rewrite di .htaccess?

risposta

18

Si dovrebbe essere in grado di reindirizzare con il seguente:

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

grazie a @jordon - se voglio aggiungere più di un indirizzo IP, quale sarebbe la sintassi? – pepe

+5

@torr Basta copiare la prima linea su un'altra linea e continuare ad aggiungerli. –

+0

Penso che REMOTE_ADDR sia preferibile a REMOTE_HOST per ottenere l'indirizzo IP. REMOTE_HOST non restituirà necessariamente l'indirizzo IP se 'HostnameLookups' è abilitato (sebbene questo sia Off di default). – MrWhite

3

Si dovrebbe creare una pagina che gestisce i reindirizzamenti specifici, e quindi modificare il file .htaccess per essere qualcosa di simile:

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 può avere js o il reindirizzamento sul lato server che gestisce dove finiscono, ma costringerà tutti coloro che non hanno ricevuto il tuo indirizzo IP attraverso una pagina specifica che gestisce il reindirizzamento.

+0

per chiarire, non voglio che i miei utenti di una pagina di reindirizzamento - voglio che vadano nella prima pagina del mio blog (wordpress) che in genere mostra se indico manualmente il browser a 'mysite.com/blog' - fa il tuo codice lo prevede? – pepe

+0

@torr: tutto quello che devi fare è creare la pagina/blog di reindirizzamento. Potrei raccomandare comunque di passare attraverso una pagina di reindirizzamento PHP, in quanto ti darà un controllo migliore, ma dovrebbe funzionare solo usando/blog –

Problemi correlati