我正在试图找出一种方法来执行以下操作:
在所有.htaccess rewrited-urls中加入“lang token”,如下所示:
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的地理定位感到有点困惑。
您认为上面提到的“创建”解决方案能否正常运行?然后,搜索引擎呢?例如,谷歌意大利会正确地找到意大利语的页面吗? (这个问题适用于所有搜索引擎)
非常感谢
答案 0 :(得分:0)
拥有一个巨大的.htaccess文件绝不是一个好主意,因为在每次请求给定网站之前解析文件,导致性能下降。
答案 1 :(得分:0)
在尝试了一些技巧后,我选择了混合技术:PHP + htaccess
我正在为那些将会涉及这个问题的人写作。
HTACCESS CONFIGURATION:
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类: http://www.geoplugin.com/webservices/php
请记住将语言设置器片段放入主构建器中,这样脚本就可以知道页面上输出的语言,即使htaccess未传递该语言。