0

我们服务器的PHP页面上有一个视频链接。当特定用户来自特定地区时,(假设来自拉丁美洲)将显示视频链接。但是一旦用户点击链接,我想将用户重定向到禁止页面。

我可以使用.htaccess文件执行此操作吗?

4

2 回答 2

1

要根据特定文件限制访问,请使用以下命令:

例子:

<Files wp-login.php>
    order deny,allow
    deny from all
    allow from 139.82.0.0/16
</Files>

为了能够使用地理位置并根据国家/地区使用重定向客户端mod_geoip2 Apache module

例子:

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

# Redirect one country
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule ^(.*)$ http://www.canada.com$1 [R,L]

# Redirect multiple countries to a single page
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US|MX)$
RewriteRule ^(.*)$ http://www.northamerica.com$1 [R,L]

另一种解决方案是手动插入将被阻止的 IP 列表。有一个名为HTACCESS Block Country by IP Range的在线服务会为您生成要阻止的 IP 列表。

例子:

# BLOCK COUNTRY BY IP RANGE
# IncrediBILL's HTACCESS Tools
# http://incredibill.me
<Limit GET POST HEAD>
order allow,deny
#
# Block from BRAZIL (BR)
#
deny from 139.82.0.0/16
deny from 143.54.0.0/16
deny from 143.106.0.0/16
deny from 143.107.0.0/16
deny from 143.108.0.0/16
deny from 146.134.0.0/16
deny from 146.164.0.0/16
deny from 147.65.0.0/16
deny from 150.161.0.0/16
deny from 150.162.0.0/16
deny from 150.163.0.0/16

对您来说,另一种可能且最合适的解决方案是使用PHP geoip module,因为您想限制用户对页面某些部分的访问,而使用PHP会更好。

首先,为 PHP 安装php-pecl-geoip模块。根据您的服务器配置,安装通常很简单。如果您使用的是RedHat/CentOS,只需运行:yum install php-pecl-geoip. 您必须具有对服务器的 root 访问权限才能安装软件,如果您使用共享主机,请让您的管理员为您执行此操作。

安装后,您将拥有一套全新的 PHP 函数供您使用。你现在应该使用的是geoip_continent_code_by_name(),因为你要求阻止来自南美的所有用户。

将其应用于您的示例很容易:

if ( geoip_continent_code_by_name( $_SERVER['REMOTE_ADDR'] ) == 'SA'  ) {
    echo '<a href="#">YouTube Video Example: This video is not available for South America.</a>';
} else {
    echo '<a href="http://www.youtube.com/watch?v=videoCode">YouTube Video Example</a>';
}

要在您的服务器上对其进行测试,您只需替换$_SERVER['REMOTE_ADDR']为属于巴西的 IP 之一,例如:geoip_continent_code_by_name('146.164.22.1');

于 2013-11-05T10:44:49.883 回答
0
RewriteCond %{REMOTE_HOST} !^123\.456\.789

RewriteCond %{REQUEST_URI} !^/blog/?

RewriteCond %{REQUEST_URI} /(.*)$

RewriteRule (.*) /blog [R=301,L]

.htaccess 重定向

于 2013-11-05T10:45:22.387 回答