2010-12-09 20 views
119

Ich versuche, alles zu verweigern und nur für eine einzige IP-Adresse zuzulassen. Aber ich möchte, dass der folgende htaccess für diese einzelne IP arbeitet. Ich finde keine Möglichkeit, beide arbeiten haben: das alles leugnen und erlauben nur eine, plus die folgenden Optionen:Alles verweigern, erlauben nur eine IP-Adresse über htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    #Removes access to the system folder by users. 
    #Additionally this will allow you to create a System.php controller, 
    #previously this would not have been possible. 
    #'system' can be replaced if you have renamed your system folder. 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #When your application folder isn't in the system folder 
    #This snippet prevents user access to the application folder 
    #Submitted by: Fabdrol 
    #Rename 'application' to your applications folder name. 
    RewriteCond %{REQUEST_URI} ^application.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #Checks to see if the user is attempting to access a valid file, 
    #such as an image or css document, if this isn't true it sends the 
    #request to index.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    # If we don't have mod_rewrite installed, all 404's 
    # can be sent to index.php, and everything works as normal. 
    # Submitted by: ElliotHaughin 

    ErrorDocument 404 /index.php 
</IfModule> 

Gibt es eine Möglichkeit, diese Arbeit zu machen?

Antwort

277
order deny,allow 
deny from all 
allow from <your ip> 
+0

Das ist für mich gearbeitet, danke! –

+69

HINWEIS! Apache ist empfindlich für Leerzeichen in htaccess. Erlaube keinen Platz zwischen verweigern, erlauben. Ie.e schreibe nicht Auftrag verweigern, erlauben. – Rabiees

+2

INFO: - Es funktioniert auch für IPv6! Fügen Sie einfach eine weitere Zeile mit 'allow from yourIPv6' hinzu. –

28

leicht modifizierte Version der oben genannten, einschließlich einer benutzerdefinierten Seite zu denjenigen angezeigt werden, der Zugriff verweigert bekommen:

ErrorDocument 403 /specific_page.html 
order deny,allow 
deny from all 
allow from 111.222.333.444 

... und auf diese Weise diese Anforderungen kommen nicht von 111.222.333.444 wird siehe specific_page.html

(dieses Posting als Kommentar schrecklich aussah, weil neue Linien verloren)

+0

Hi. Ich habe den gleichen Code wie in meinem .htaccess, aber ich bekomme immer einen Fehler von 500. Die angegebene Seite heißt 'test.html' und befindet sich im selben Ordner wie' .htaccess'. Allerdings kann ich die Protokolle nicht sehen (vom Server nicht erlaubt). Hast du eine Idee, warum ich dieses Problem haben könnte? Wenn ich den Pfad der Datei über einen FTP-Client bekomme, sagt er mir '/ test.html', also sollte der Pfad kein Problem sein, richtig? – Musterknabe

+0

Auch der 500 Fehler kommt selbst wenn ich die Zeile mit dem Errordocument auskommentiert habe. Das sollte also nicht das Problem sein. Gibt es einen Grund, warum die anderen 3 Zeilen nicht funktionieren könnten? In meinem .htaccess Ich habe drei weitere Zeilen, wo ich nicht-www zu www umleitung, aber das ist es. Aber ich bekomme auch den Fehler, wenn ich NUR die drei Zeilen mit demy, allow, etc. habe. – Musterknabe

38

dies mit der Richtlinie für tha entworfen verbessert werden kann t Aufgabe.

ErrorDocument 403 /specific_page.html 
Order Allow,Deny 
Allow from 111.222.333.444 

Wo 111.222.333.444 ist Ihre statische IP-Adresse.

Bei Verwendung der Anweisung "Order Allow, Deny" müssen die Anforderungen entweder Zulassen oder Verweigern entsprechen, wenn keine der Bedingungen erfüllt ist, wird die Anforderung abgelehnt.

http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order

2

Sie können die folgenden in .htaccess verwenden, um Zugriff auf Ihre Website zu erlauben oder zu verbieten:

SetEnvIf remote_addr ^1\.2\3\.4\.5$ allowedip=1 

Order deny,allow 
deny from all 
allow from env=allowedip 

Wir zunächst eine env Variable allowedip, wenn der Client die IP-Adresse dem Muster übereinstimmt, Wenn das Muster übereinstimmt, wird die env-Variable allowedip den Wert zugewiesen.

Im nächsten Schritt verwenden wir Allow, deniry-Anweisungen, um den Zugriff auf die Site zu erlauben oder zu verweigern. Order deny,allow steht für die Reihenfolge deny und allow. deny from all Diese Zeile weist den Server an, alle Benutzer zu verwerfen. Die letzte Zeile allow from env=allowedip ermöglicht den Zugriff auf eine einzelne IP-Adresse, für die wir die Umgebungsvariable festlegen.

Ersetzen Sie 1\.2\.3\.4\.5 mit Ihrer IP-Adresse.

Refrenzen:

+1

Was sind die Pluspunkte dafür, anstatt nur von 324.234.22.1 zu erlauben? –

50

Ich weiß, diese Frage bereits eine Antwort akzeptiert hat, aber die Apache documentation sagt:

Die Anweisungen "Allow", "Deny" und "Order", die von mod_access_compat, bereitgestellt werden, sind veraltet und werden in einer zukünftigen Version entfernt.Sie sollten vermeiden, mit ihnen, und vermeiden Sie veraltete Tutorials empfehlen ihre Verwendung.

Also, eine zukunftssichere Antwort wäre:

<RequireAll> 
    Require ip xx.xx.xx.xx yy.yy.yy.yy 
</RequireAll> 

Hoffentlich habe ich geholfen diese Seite zu verhindern, dass einer dieser „veraltet Tutorials“ zu werden. :)

+0

Wo legen wir unsere IP? –

+0

Ja Das funktioniert gut. – Sadee

+0

Weg zu gehen! Dies sollte als Lösung akzeptiert werden, da es nicht nur funktioniert, sondern auch zeitsparend ist. – 6opko

5

Verbesserung ein bisschen mehr die bisherigen Antworten:

ErrorDocument 403 /maintenance.html 
Order Allow,Deny 
Allow from #.#.#.# 

Wo:

0

Wenn yo u wollen für die Zugangskontrolle mod_rewrite verwenden Sie Bedingung wie User-Agent, Referrer, Remote Adr usw.

Beispiel

RewriteCond %{REMOTE_ADDR} !=*.*.*.* #you ip address 
RewriteRule ^$ - [F] 

Refrenzen verwenden:

1

Ich konnte die 403-Methode nicht verwenden, weil ich die Wartungsseite und die Seitenbilder in einem Unterordner auf meinem Server speichern wollte Annäherung an eine ‚Wartungsseite‘ für alle zu umleiten, sondern eine einzige IP *

RewriteEngine on 
RewriteCond %{REMOTE_ADDR} !**.**.**.* 
RewriteRule !^maintenance/ http://www.website.co.uk/maintenance/ [R=302,L] 

Quelle: Creating a holding page to hide your WordPress blog

0

Sie können mehr als eine IP oder sogar eine andere Art von erlauben wie Benutzer, den Hostnamen. .. mehr Info hier https://www.askapache.com/htaccess/setenvif/

SetEnvIf remote_addr ^123.123.123.1$ allowedip=1 
SetEnvIf remote_addr ^123.123.123.2$ allowedip=1 
SetEnvIf remote_addr ^123.123.123.3$ allowedip=1 
SetEnvIf remote_addr ^123.123.123.4$ allowedip=1 

Order deny,allow 
deny from all 
allow from env=allowedip 
Verwandte Themen