我正在尝试找出一种方法来执行以下操作:
在所有 .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 文件从来都不是一个好主意,因为在每次向给定网站发出请求之前都会解析该文件,从而导致性能损失。
在尝试了一些技术之后,我选择了混合技术: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 Class: http://www.geoplugin.com/webservices/php
请记住将语言设置器片段放入主构建器中,以便脚本可以知道在页面上输出什么语言,即使 htaccess 没有传递该语言。
我尝试获取美国 IP htaccses 代码
这里是[高级188] (https://hbxinchi.com)
这里是[高级188] (https://kshowid.net)
这里是[高级188] (https://jiefudh.xyz)
这里是[高级188] (https://hbxinchi.com)
它正在工作,页面转到403..但我尝试使用另一个IP国家/地区打开,页面仍然显示403..它应该只适用于美国IP..