.htaccess 地理定位,无需 mod_geoip

问题描述 投票:0回答:3

我正在尝试找出一种方法来执行以下操作:

在所有 .htaccess 重写 URL 中包含“lang 令牌”,如下所示:

RewriteRule ^/?$     _main_htaccess_handler?mod=homepage&lang=[LANG_STRING]
RewriteRule ^disclaimer\.htm?$     _main_htaccess_handler?mod=disclaimer&lang=[LANG_STRING]

...等等,对于所有网址

除意大利外的所有国家:

[LANG_STRING] = 'EN';

国家意大利

[LANG_STRING] = 'IT';

现在,在寻找实现此目的的方法,我找到了这个脚本:

http://ipinfodb.com/country_query.php?country=IT&output=htaccess_allow

这将输出分配给某个国家/地区的 IP 列表,准确度为 99.5%。

我想将这些 IP 子网字符串“链接”到上面提到的 .htaccess 类型的方法。

无论如何,我对在没有 mod_geoip 的情况下通过 .htaccess 进行地理定位有点困惑。

您认为我“创建”并上面提到的解决方案可以很好地工作吗?那么,搜索引擎呢?例如,Google Italy 能否正确找到意大利语页面? (这个问题适用于所有搜索引擎)

非常感谢

.htaccess geolocation
3个回答
0
投票

拥有巨大的 .htaccess 文件从来都不是一个好主意,因为在每次向给定网站发出请求之前都会解析该文件,从而导致性能损失。


0
投票

在尝试了一些技术之后,我选择了混合技术:PHP + htaccess

我正在为那些将要讨论这个问题的人写它。

HT访问配置:

RewriteRule    ^/?$    _builder.php?mod=language-redirect    [L,QSA]
RewriteRule    ^en/?$     _builder.php?mod=homepage&lang=en  [L,QSA]
RewriteRule    ^it/?$     _builder.php?mod=homepage&lang=it    [L,QSA]

_builder.php 代码(相对于意大利语和英语,可轻松转换以满足您的需求)

if ( ! isset ( $_GET['lang'] ) || ( $_GET['lang'] != 'en' && $_GET['lang'] != 'it' ) ) {
    // reaches here when someone accesses the / of the site. This piece of code outputs the correct geolocation language. If needed, you can also place an header redirect to the correct language-based homepage instead of defining the language
    $geoplugin = new geoPlugin();
    if ( $geoplugin -> countryCode == 'IT' ) define ( 'LANGUAGE', 'it' );
    else define ( 'LANGUAGE', 'en' );
}
else {
    if ( $_GET['lang'] == 'it' ) define ( 'LANGUAGE', 'it' );
    else define ( 'LANGUAGE', 'en' );
}

最后,可以通过 Google“PHP geoplugin”或通过以下网址访问 geoPlugin Classhttp://www.geoplugin.com/webservices/php

请记住将语言设置器片段放入主构建器中,以便脚本可以知道在页面上输出什么语言,即使 htaccess 没有传递该语言。


0
投票

我尝试获取美国 IP htaccses 代码

enter image description here

这里是[高级188] (https://hbxinchi.com)

这里是[高级188] (https://kshowid.net)

这里是[高级188] (https://jiefudh.xyz)

这里是[高级188] (https://hbxinchi.com)

它正在工作,页面转到403..但我尝试使用另一个IP国家/地区打开,页面仍然显示403..它应该只适用于美国IP..

© www.soinside.com 2019 - 2024. All rights reserved.