Nur bestimmte IP auf URL zulassen

Sandro Feuillet

Legendäres Mitglied
Hallo Zusammen,

Habe leider über die Suche nichts gefunden.

Ich muss den Zugriff auf eine spezifische URL einer Seite per .htaccess auf einige IP Adressen beschränken.
Problem ist, dass das CMS schon mod_rewrite drin hat, also alle URLs umschreibt.
Ich weiss jetzt nicht genau
a) wie der Code aussieht für die Beschränkung einer URI auf bestimmte IPs
und
b) wo genau im htaccess das hin muss.

Habe bei Google dies dazu gefunden:

CODE RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123\.255\.123\.255
RewriteCond %{REMOTE_ADDR} !^124\.255\.124\.255
RewriteCond %{REMOTE_ADDR} !^125\.255\.125\.255
RewriteCond %{QUERY_STRING} option=com_my_special_component [NC]
RewriteRule ^(.*)$ index.php [F,L]


Aber bei mir gehts ja nicht um den Query String sondern um die ganze URL.

Wie gesagt, ist das nicht ein File sondern eine dynamische CMS Seite...

Hoffe ihr versteht mein Problem.

 
Hallo,

wie sieht den die URL aus, den URL kann alles sein, da gehört auch der Query-String hinzu. Oder meinst Du Domain?

Wenn das der Fall ist eine .htaccess Datei im Root-Verzeichnis erstellen mit dem Inhalt:

CODE # Einzele IP sperren
Deny from 123.255.123.255

# IP-Bereich sperren
Deny from 123.255.124.0/24


PS: Wikipedia URL - Aufbau
 
Hallo Sascha,

Es gibt eben nicht darum, bestimmte auszuschliessen, sonder bestimmte IPs einzuschliessen.

Habe das jetzt mit einer PHP Lösung umgesetzt und nicht mit htaccess

CODE <?
$visitor = $_SERVER['REMOTE_ADDR'];
$patterns = array(
"192.xxx.xxx.xxx", //User 1
"192.xxx.xxx.xxx", //User 2
);
$regex = '/(' .implode('|', $patterns) .')/i';
if (!preg_match($regex,$visitor)) {
header('Location: http://www.redirectdomain.comx');
}&#59;
?>



Vielleicht nützt der Code auch jemand anderem der auf ein noch nicht veröffentlichtes Projekt nur bestimmte IPs zulassen will...

Liebe Grüsse,
Sandro
 
Ok, hier dann nur nochmal das Beispiel um für die gesamte Website nur bestimmte IPs zu zulassen:

CODE Order Deny,Allow
Deny from all

# Einzele IP
Allow from 123.255.123.255

# IP-Bereich
Allow from 123.255.124.0/24


(Je nach Routing müssen ggf. folgende Netze erlaubt werden: 192.168.0.0/16, 172.17.0.0/16, 10.0.0.0/8)



@Sandro wäre es nicht sinniger zu statt preg_match() eher in_array() zu verwenden? Sonst müsstest Du auch schon die $pattern als Regex schreiben (Stichwort escapen) oder eben ein preg_quote() noch drüber schicken.
 
QUOTE (Sascha Ahlers @ Mo 19.12.2011, 11:42) Ok, hier dann nur nochmal das Beispiel um für die gesamte Website nur bestimmte IPs zu zulassen:



Das Problem ist eben, dass ich den Zugriff nur auf eine bestimmte Seite (example.com/restricted.html) sperren will, alle anderen Seiten aber öffentlich zugänglich sein sollen... Und das geht mit dem Script gut, mit der .htaccess Anweisung sperre ich alle anderen aus.


QUOTE @Sandro wäre es nicht sinniger zu statt preg_match() eher in_array() zu verwenden? Sonst müsstest Du auch schon die $pattern als Regex schreiben (Stichwort escapen) oder eben ein preg_quote() noch drüber schicken.


Mag sein, da es jedoch funktioniert und nur für kurze Zeit verwendet wird lass ichs mal so stehen...
biggrin.gif
Kriege ja nix zusätzlich dafür das noch zu optimieren... hehe.
 
Zurück
Oben