Hogyan tilthatja meg a webhelyhez való hozzáférést az országhoz való tartozás kritériumai alapján?

  • PHP
  • htaccess
  • URL átírása

Üdvözlet,% username%.

Szükséges:
A hozzáférés megkülönböztetése. Tilos mindenkihez hozzáférni, mondjuk, kivéve az "RF" -et és a külföldről érkező országokat (nagyon sok kérés csak a domb miatt volt).

Javasolt megoldás:
A php használatával határozza meg az ügyfél országát (megvalósítva) és a "átláthatóan megosztott" fájlokhoz való hozzáférést. Átirányítja az összes kérést php-re:

A check.php lekérdezési karakterláncot kap a GET-ben, és ugyanazon a helyen ellenőrizzük az IP-t. A feldolgozás után elhatároztuk, hogy mi a teendő a kéréssel (megtudtuk, hogy az ország ellenőrizte az IP-t a földrajzi adatbázisban) - kihagyja vagy blokkolja -, de hogyan kell visszavezetni az irányítást?
Ie ha a kérés az IP-ről "RF", és a webhely gyökérét kérték - csak meg kell jeleníteni a webhely gyökérmutatóját; ha a kérés IP-ről "RF", és a fájlt kérték - szükség van egy közvetlen linken keresztül, amelyet korábban használtak, anélkül, hogy megváltoztatta volna az URL-t.
Ha a kérés az IP-címről nem "RF", és a külföldön tartózkodó országok, valamint a webhely gyökere is kért - küldje el a 403 fejlécet, és adja ki a megfelelő hibát; Ha egy fájlt egy közvetlen kapcsolat kér, akkor ugyanazt a 403-as hibát kell bejelentenie.

Elképzelés szerint lehetséges:
Ha ip hagyjuk - do header ( 'Location:' @ $ _ GET [ 'url'] .. 'átirányítás = nincs?');. és adjunk hozzá .htaccess RewriteCond% (^ |) redirect = nem ($ |) (és ha megtagadják - a fejléc átirányítási kódot oldalon 403-cap), de ez járna az átirányítást (amit el kell kerülni), és lehetetlenné teszi az elvonási! index könyvtár.

Lehetséges-e a php-munka "átlátható"? Ie apache dolgozni működött, de ha az ügyfél ip a "fekete lista" - a hozzáférést?

ps. Elnézést kérek néhány pontatlan nyelvért

Sajnálom, nem vagyok biztos benne, hogy tudja, hogyan kell ezt csinálni a .htaccess és apache meztelen, de miért nem használja nginx tudott, gyűjtött egy a sok GeoIP modult.
Először nginx jobban megbirkózzanak a statikus, és valószínűleg a teher csökkenni fog azonnal bevezetése után nginxa, mint az első, és nem lesz égető szükség van, hogy csökkentsék a felhasználók által régióban, másrészt az nginx végrehajtása egyszerűen elég:
Például, ha a geoip2 modult használja, használhatja a szabványos, ha a nginx zárakban lévő konstrukciója összehasonlítja a $ region értékét azokkal, amelyeknek ki kell kapcsolniuk / engedélyezniük kell.

Elnézést kérek, ha úgy gondolja, hogy a válaszom offtopic.

Ó, ez fantasztikus lenne! De sajnos nem lehet a gazdagépektől eltérő modulokat használni (és a rendelkezésre álló között nincs semmi, ami a geo pozícióhoz kapcsolódik, és nincs említés, bár a lelkiismeret megtisztítása érdekében a levél a támogatónak mind ugyanazt írta)

Általában barátok, a megoldás. Köszönet mindenkinek, aki válaszolt!

A php gondozását szimulálhatja "átlátszó üzemmódban". Lehetséges, de nagyon erőforrás-igényes. Két szóval az algoritmusnak így kell kinéznie: az összes kérés átkerül az index.php fájlba; Ha meglévő könyvtárat kérünk, kinyomtatjuk a listát; ha kérünk egy fájlt, azt darabokkal olvassuk el és kiadjuk (a szükséges fejlécek előzetes megadása). De, mivel sokat kér, és a fájlok - meglehetősen nagyok - a megoldás kb. két percet tesz a kiszolgálónak. Ez működne, rugalmas lenne, de be. Nagyon keserves döntést kell hoznom ebben a helyzetben.

Mi történt - mivel a "ruscentr" (nic.ru) tárhelyet - a működési mód manuális módra lett átváltva, a mod_geoip modul a forrásokból készült. és az apache-t a "natív" könyvtárból (natív minden ridonly) csúsztatta. Apache evett, a modul fel lett állítva, minden működött. A "ruscentra" fórumon a natív "kézikönyv" rendkívül hiányos, a teljes folyamatról jegyzetet tett. A rucenter támogatása soha nem válaszolt a levelekre. A harmadik nap telt el.