2008-11-16 8 views
12

Im Grunde bin ich dabei, die Arbeit auf einer Website zu beginnen, und ich möchte etwas, dass ich hinzufügen kann in meine .htaccess-Datei (oder anderswo), die wie dieser Pseudocode funktionieren wird: (ip wird anstelle von 127.0.0.1 sein)Willst du alle Besucher mit Ausnahme von mir umleiten

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

Hoffentlich, die Sinn macht ...

Antwort

20

das something like wäre:

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] 

Als Andrew Punkte aus, die% { ANFORDERN_ URI} Bedingung vermeidet Endlosschleife, wenn Sie auf die gleiche Domäne umleiten.

Als Xorax Kommentare almost 9 years later:

Sie nicht REMOTE_HOST verwenden sollten, wird es in vielen Fällen scheitern. Sie sollten REMOTE_ADDR verwenden.
Cf "difference between REMOTE_HOST and REMOTE_ADDR"

+0

Jetzt, da IPv6 im Bild ist, finde ich, gibt es Fälle, in denen die Localhost-IP-Adresse als :: 1, nicht immer 127.0.0.1 kommt - nicht genau, wann und warum, aber damit umzugehen denke ich Sie benötigen eine zusätzliche Bedingung: 'RewriteCond% {REMOTE_HOST}!^:: 1' Die Doppelpunkte sollten keine Escapes erfordern - keine Sonderzeichen für die Reverse-Engine regex, glaube ich nicht. –

+0

Sie sollten REMOTE_HOST nicht verwenden, es wird in vielen Fällen fehlschlagen. Sie sollten REMOTE_ADDR verwenden. https://stackoverflow.com/questions/3812166/difference-between-remote-host-and-remote-addr – Xorax

+0

@ Xorax Danke. Ich habe meine 9 Jahre alte Antwort geändert. – VonC

0

Mit diesem Ansatz vorsichtig.

Ich habe gebrannt, indem ich den IP-basierten Ansatz zur Beschränkung des Zugriffs genommen habe, und dann den Mietvertrag für meine IP-Adresse verloren habe.

Natürlich können Sie immer ssh in die betreffende Box und ändern Sie die .htaccess-Datei erneut, aber die 5 Minuten der Panik, während Sie versuchen, herauszufinden, was gerade passiert ist nicht gerade Spaß, wenn Sie nicht erwarten passieren.

Ich empfehle stattdessen die .htaccess (in Verbindung mit einer htpasswd Datei), um Anmeldeinformationen für den Zugriff auf Ihre Entwicklungs-Site anzufordern.

Ein gutes Beispiel dafür ist hier: http://aplawrence.com/foo-web/htaccess-authentication.html

+0

Danke, guter Punkt, aber ich werde diese Linie nicht länger als ein oder zwei Wochen halten. –

+0

Je nachdem, wie Ihr Netzwerk eingerichtet ist, können Ihre Lease-Zeiten viel kürzer sein. –

3

Hier ist die Lösung, die ich am Ende mit, beachten Sie, dass es zu VonC der Ausnahme, dass seine verursacht eine Endlosschleife ähnlich ist, wenn Sie auf die gleiche Domain umleiten gewählt haben.

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] 

Es sollte auch beachtet werden, dass 302 eine vorübergehende Bewegung und soll IfModule dieser wird umleiten alle außer der 3 IP-Adresse anstelle von nichts oder 301.

+0

Ich habe in meiner Antwort gerade Ihren zusätzlichen Neuschreibzustand hinzugefügt, um gründlich zu sein. – 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> 

vor Ihrer Wordpress verwendet werden, in Frage.

Sie einfach ftp auf die Website und bearbeiten Sie die. Htaccess-Datei, wenn Ihre IP-Adresse ändert.