2013-11-12 8 views
2

Я использую этот мобильный код Htaccess переназначения:Mobile Перенаправление через Htaccess для разных стран

RewriteEngine On 

RewriteCond %{HTTP_USER_AGENT} (mobile|android|iphone|ipod|ipad|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|iris|kindle|sgh|brew|htc|j2me|lg|midp|mot|netfront|nokia|obigo|openweb|operamini|palm|plucker|pocket|psp|samsung|sanyo|sch|smartphone|sonyericsson|symbian|symbos|teleca|up.browser|vodafone|wap|webos|windowsce|xda|xiino) [NC] 
RewriteRule ^(.*)$ url1 [R=302,L] 

Теперь я хочу, чтобы сохранить этот код, но и перенаправить мобильных пользователей из некоторых конкретных стран к различным URL2. Как я могу это сделать? Является ли приведенный ниже код решением /, возможно ли, чтобы оба кода существовали в htaccess /?

RewriteEngine On - /for all users/ 

RewriteCond %{HTTP_USER_AGENT} (mobile|android|iphone|ipod|ipad|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|iris|kindle|sgh|brew|htc|j2me|lg|midp|mot|netfront|nokia|obigo|openweb|operamini|palm|plucker|pocket|psp|samsung|sanyo|sch|smartphone|sonyericsson|symbian|symbos|teleca|up.browser|vodafone|wap|webos|windowsce|xda|xiino) [NC] 
RewriteRule ^(.*)$ url1 [R=302,L] 

RewriteEngine On - /only for Ca, US and MX for example/ 

RewriteCond %{HTTP_USER_AGENT} (mobile|android|iphone|ipod|ipad|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|iris|kindle|sgh|brew|htc|j2me|lg|midp|mot|netfront|nokia|obigo|openweb|operamini|palm|plucker|pocket|psp|samsung|sanyo|sch|smartphone|sonyericsson|symbian|symbos|teleca|up.browser|vodafone|wap|webos|windowsce|xda|xiino) [NC] 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US|MX)$ 
RewriteRule ^(.*)$ url2 [R=302,L] 

спасибо.

ответ

0

Прежде всего, вам необходимо убедиться, что вы установили и загрузили модуль mod_geoip (подробнее here). Тогда вы хотите, чтобы ваши правила, чтобы быть наоборот, так как первое правило будет просто соответствовать всем странам, перенаправлять и второе правило никогда не будет достигнуто:

RewriteEngine On 

RewriteCond %{HTTP_USER_AGENT} (mobile|android|iphone|ipod|ipad|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|iris|kindle|sgh|brew|htc|j2me|lg|midp|mot|netfront|nokia|obigo|openweb|operamini|palm|plucker|pocket|psp|samsung|sanyo|sch|smartphone|sonyericsson|symbian|symbos|teleca|up.browser|vodafone|wap|webos|windowsce|xda|xiino) [NC] 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US|MX)$ 
RewriteRule ^(.*)$ url2 [R=302,L] 

RewriteCond %{HTTP_USER_AGENT} (mobile|android|iphone|ipod|ipad|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|iris|kindle|sgh|brew|htc|j2me|lg|midp|mot|netfront|nokia|obigo|openweb|operamini|palm|plucker|pocket|psp|samsung|sanyo|sch|smartphone|sonyericsson|symbian|symbos|teleca|up.browser|vodafone|wap|webos|windowsce|xda|xiino) [NC] 
RewriteRule ^(.*)$ url1 [R=302,L] 

В качестве альтернативы использованию GEOIP_COUNTRY_CODE, вы также можете использовать:

RewriteCond %{ENV:GEOIP_CONTINENT_CODE} ^NA$ 

для всей Северной Америки.

+0

Чем вы, Джон Лин, но кажется, что я должен обновить свой Apache от 2 до 2.2, что является риском для меня. Вы знаете другой способ перенаправления разных стран на разные URL-адреса. htaccess, кроме опции mod_geoip? Спасибо. – user1731979

+0

Могу ли я использовать только% {COUNTRY_CODE} или% {ENV: COUNTRY_CODE} вместо% {ENV: GEOIP_COUNTRY_CODE}? – user1731979

+0

Спасибо, Джон Лин. Код работает. – user1731979

Смежные вопросы