2008-11-16 11 views
12

Fondamentalement, je suis sur le point de commencer à travailler sur un site et j'aimerais quelque chose que je peux ajouter dans mon fichier .htaccess (ou ailleurs) qui fonctionnera comme ce pseudo code: (mon ip sera en place de 127.0.0.1)Vous voulez rediriger tous les visiteurs sauf moi

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

Il faut espérer que logique ...

Répondre

20

ce serait 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] 

comme Andrew rappelle, le% { DEMANDE_ La condition URI} évite la boucle infinie si vous redirigez vers le même domaine.

Comme Xorax commentaires almost 9 years later:

Vous ne devriez pas utiliser REMOTE_HOST, il échouera dans de nombreux cas. Vous devez utiliser REMOTE_ADDR.
Cf "difference between REMOTE_HOST and REMOTE_ADDR"

+0

Maintenant que IPv6 est dans l'image, je trouve qu'il y a des cas où l'adresse IP localhost passe par :: 1, pas toujours 127.0.0.1 - pas exactement sûr quand et pourquoi, mais pour gérer cela je pense vous avez besoin d'une condition supplémentaire: 'RewriteCond% {REMOTE_HOST}!^:: 1' Les deux-points ne devraient pas exiger d'échappement - pas de caractères spéciaux pour l'expression regex du moteur de réécriture, je ne crois pas. –

+0

Vous ne devriez pas utiliser REMOTE_HOST, cela échouera dans de nombreux cas. Vous devriez utiliser REMOTE_ADDR. https://stackoverflow.com/questions/3812166/difference-between-remote-host-and-remote-addr – Xorax

+0

@Xorax Remerciements. J'ai modifié ma réponse de 9 ans. – VonC

0

Soyez prudent avec cette approche.

J'ai été brûlé en adoptant l'approche basée sur IP pour limiter l'accès, puis perdre le bail sur mon adresse IP.

Bien sûr, vous pouvez toujours retourner dans la boîte en question et changer le fichier .htaccess à nouveau, mais les 5 minutes de panique pendant que vous essayez de comprendre ce qui vient de se passer ne sont pas vraiment amusantes si vous ne l'attendez pas se passer.

Je recommande plutôt d'utiliser .htaccess (en conjonction avec un fichier htpasswd) pour demander des informations d'identification pour accéder à votre site de développement.

Un bon exemple de ce qui est ici: http://aplawrence.com/foo-web/htaccess-authentication.html

+0

Merci, bon point mais je ne vais pas garder cette ligne pendant plus d'une semaine ou deux. –

+0

En fonction de la configuration de votre réseau, vos délais de location pourraient être beaucoup plus courts. –

3

est ici la solution que je fini par utiliser, notez qu'il est similaire à celui VonC sauf que sa cause une boucle infinie si vous avez choisi de rediriger vers le même domaine.

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] 

Il convient également de noter que 302 est un mouvement temporaire et doit être utilisé au lieu de rien ou 301.

+0

Je viens d'ajouter votre condition de réécriture supplémentaire dans ma réponse, pour être approfondie. – VonC

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> 

avant votre wordpress IfModule ce redirigera tout le monde sauf l'adresse 3 IP question.

Vous simplement ftp sur le site et éditez le fichier .htaccess si votre adresse IP change.

Questions connexes