3

geoip で国をブロックすることに問題があります。ホスティング アカウント ユーティリティを使用して国をブロックすると、以下のスクリプトが .htaccess に作成されます。問題は、機能していないように見えることです (米国を追加しましたが、ブロックされませんでした)。

GeoIPEnable on
RewriteEngine on
   RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AU$   [OR]
   RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$   [OR]
   RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CN$   
   RewriteRule ^.*$ - [F] 

そのため、リストの最後の国に [OR] を追加しましたが、リストにない国を含むすべてをブロックするようになりました。ここで US を削除しようとしましたが、それでも 403 メッセージを受け取りました。

GeoIPEnable on
RewriteEngine on
   RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AU$   [OR]
   RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$   [OR]
   RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CN$   [OR]
   RewriteRule ^.*$ - [F]
4

1 に答える 1

1

使わずにやりました.htaccess。次のコード スニペットをheaderファイルに配置しました。これはあなたに役立つかもしれません:

<?php 
include("includes/lcs/geoip.inc"); //Also load this file for its functions.
$serverIP=$_SERVER['REMOTE_ADDR']; //Get the IP address.
//echo $serverIP;
$gi = geoip_open("includes/lcs/GeoIP.dat",GEOIP_STANDARD); //Get the 2 letter country designation for the IP address.
$restricted_countries = array("US"); // list of restricted countries like array("NP", "US"); 
$country = geoip_country_code_by_addr($gi, $serverIP);


$restricted_pages = array("country_login","country_contact","country_password_forgotten","account"); 


if( (in_array($country,$restricted_countries)) and (!in_array($_GET['main_page'],$restricted_pages) ) )
{   
    header("location: https://www.yoursite.com/country_contact.html");

}
?>

country_contact.htmlこれは、制限された国にリダイレクトするだけです。

于 2013-05-28T10:42:40.500 に答える