2011-03-26 34 views
1

我試圖找出一種方法做以下的.htaccess地理位置:沒有mod_geoip

包含「郎令牌」納入所有的.htaccess rewrited的URL,就像這樣:

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

......等等,所有的URL

所有國家除意大利以外:

[LANG_STRING] = 'EN';

國家意大利

[LANG_STRING] = 'IT';

現在,尋找做到這一點的方法,我發現這個腳本:

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

這將輸出分配給一個國家的IP地址列表,有99.5%的準確性。

我想「鏈接」的IP子網串上述的方針的.htaccess類型。

反正我有點困惑通過的.htaccess geolocalization沒有mod_geoip。

您是否認爲我已經「創建」並在上面提到的解決方案可以很好地工作?那麼,搜索引擎呢?例如,Google意大利會在意大利正確找到頁面嗎? (這個問題適用於所有的搜索引擎)

非常感謝您

回答

0

有一個巨大的.htaccess文件是不是一個好主意,因爲該文件的每個請求給定網站之前分析,造成損失性能。

0

嘗試過一些技巧後,我選擇了一個混合動力之一:PHP + htaccess的

我寫它,將飛入這個問題的人。

.htaccess的配置:

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 CODE(相對於意大利語和英語語言,易於轉換,以滿足您的需求)

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'); 
} 

最後,geoPlugin類可達通過谷歌 「PHP geoplugin」 或這個網址: http://www.geoplugin.com/webservices/php

請記住將語言設置程序片段放置到主構建器中,以便腳本可以知道要在頁面上輸出哪種語言,即使未通過htaccess傳遞該語言。