Toon posts:

[.htaccess] Checken op IP-adres met bepaalde berekening*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het volgende is de situatie. Ik heb een aantal ip nummers die als volgt van ip adressen zijn afgeleid:

Stel dat een ip adres A.B.C.D is, dan is het nummer:
IP nummer, X = A * (256*256*256) + B * (256*256) + C * 256 + D

Dus ip adres 161.132.13.1 wordt:
X = 161 * (256*256*256) + 132 * (256*256) + 13 * 256 + 1 = 2709785857

Ik heb die nummers in bepaalde ranges, dus bijvoorbeeld 27097885857 tot 270978999999 (en dat representeert dan weer een bepaald land van herkomst, maar dat doet er nu niet toe).

Wat ik wil is dit, maar ik weet niet of dat kan. Ik wil in mijn .htaccess file het ip adres van de bezoeker (REMOTE_ADDR) omzetten naar zo'n nummer en dan vergelijken met een aantal ranges. Valt hij dan binnen een van die ranges, dan wordt hij geredirect (omdat hij uit een bepaald land komt) en valt hij er buiten, dan gaat hij gewoon naar de opgevraagde pagina.

Is dit uberhaupt mogelijk om te doen in een .htaccess file?

Het is natuurlijk heel makkelijk te doen in bijvoorbeeld php, maar ik wil dit toepassen op bijvoorbeeld alle pagina's die in een bepaald domein opgevraagd worden, dus dan lijkt het me dat het in de .htaccess file moet gebeuren.

Verwijderd

Move PNS > SA

En verzin in het vervolg graag een titel die het probleem ook omschrijft, niet of hij moeilijk of makkelijk is.

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 22-08 10:30

TheBorg

Resistance is futile.

Ik zal je even uit de droom helpen, met alleen .htaccess gaat dat nooit lukken.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:08
Je zou de adress ranges op kunnen splitsen naar een reeks network ranges (dat kan gegarandeerd met maximaal enkele tientallen) en daar directives voor genereren.

edit: voorbeeld bijgewerkt.

Bijvoorbeeld, de range 161.132.13.1 tot en met 161.132.24.255 kun je omschrijven naar een serie network ranges, door ze eerst om te zetten naar een binair getal. In dit geval als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
10100001100001000000110100000001 / 0
10100001100001000000110100000010 / 1
10100001100001000000110100000100 / 2
10100001100001000000110100001000 / 3
10100001100001000000110100010000 / 4
10100001100001000000110100100000 / 5
10100001100001000000110101000000 / 6
10100001100001000000110110000000 / 7
10100001100001000000111000000000 / 9
10100001100001000001000000000000 / 11
10100001100001000001100000000000 / 8

Terugconverteren naar IP-adressen geeft:
code:
1
2
3
4
5
6
7
8
9
10
11
161.132.13.1 / 0
161.132.13.2 / 1
161.132.13.4 / 2
161.132.13.8 / 3
161.132.13.16 / 4
161.132.13.32 / 5
161.132.13.64 / 6
161.132.13.128 / 7
161.132.14.0 / 9
161.132.16.0 / 11
161.132.24.0 / 8

Deze network ranges kun je wel direct in Apache gebruiken.

[ Voor 145% gewijzigd door Soultaker op 16-12-2004 23:03 ]


Verwijderd

Topicstarter
TheBorg schreef op donderdag 16 december 2004 @ 22:06:
Ik zal je even uit de droom helpen, met alleen .htaccess gaat dat nooit lukken.
Hoe zou het volgens jou dan wel kunnen? Zo opmerkelijk is het toch ook weer niet dat ik bezoekers uit bepaalde landen via ip wil redirecten? Dat komt toch wel meer voor?