Перенаправление .htaccess, исключить поддомен - PullRequest
0 голосов
/ 03 апреля 2012

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

Что я хочу сделать, так это когда вы заходите на мобильный сайт, он дает вам возможность увидеть наш полный корпоративный сайт или мобильный сайт.У меня это хорошо перенаправляет на эту страницу, но когда вы выбрали просмотр полного сайта, он перенаправит вас обратно на ту же страницу, вместо просмотра полного сайта.У меня есть мобильный сайт в подкаталоге "www.companysite.com/mobile".Можно ли так, чтобы при выборе варианта просмотра полного сайта он не перенаправлял вас на мобильный сайт?Вот мой код прямо сейчас:

    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} android
    RewriteRule .* http://companysite.com/mobile [R=301,L]

    RewriteCond %{HTTP_USER_AGENT} BlackBerry
    RewriteRule .* http://companysite.com/mobile [R=301,L]

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 29 мая 2012

Некоторым людям нравится использовать куки, но это немного сложнее.Пример решения может быть следующим:

    ## Setting a cookie and variable for mobile users
    RewriteRule .* - [E=IsMobile:false]
    RewriteRule .*  - [E=MobileCookie:false]

    # Mobile Redirection
    # Blackberry
    #RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} "blackberry" [NC]
    RewriteRule ^$ http://mobile.website/ [L,R=302]
    # End Blackberry

    # Mobile Redirection for IPhone
    RewriteCond %{HTTP_USER_AGENT} "googlebot-mobile|iemobile|iphone|ipod|opera mobile" [NC]
    RewriteRule ^$ http://mobile.website/ [L,R=302]
    # End other IPhone

    # Mobile Redirection for other Mobile
    RewriteCond %{HTTP_USER_AGENT} "android|palmos|webos" [NC]
    RewriteRule ^$ http://mobile.website/ [L,R=302]

    # Set isMobile variable to true
    RewriteRule .* - [E=IsMobile:true]
    # End other Mobile

    ## Assume the mobile cookie is not set:
    RewriteRule .* - [E=MobileCookie:false]

    ## Checking for mobile cookie
    RewriteCond %{HTTP_COOKIE} gpf_mobileoff=true
    RewriteRule .* - [E=MobileCookie:true]

    ## Combining IsMobile & MobileCookie to make one rule
    RewriteRule .* - [E=ShowMobile:false]
    RewriteCond %{ENV:IsMobile} ^true$
    RewriteCond %{ENV:MobileCookie} !^true$
    RewriteRule .* - [E=ShowMobile:true]
    ########## End - Custom redirects

Конечно, вам нужно изменить mobile.website в приведенном выше коде и использовать js или какой-либо другой метод для добавления mobilecookie.

Лично ябольше похоже на условие HTTP_REFERRER.

0 голосов
/ 05 апреля 2012

Я думаю, что вы также можете проверить реферер. Если реферал - ваш собственный сайт, вы не делаете перенаправление. Что-то вроде

RewriteCond %{HTTP_USER_AGENT} android
RewriteCond %{HTTP_REFERER} !yoursite\.com
RewriteRule .* http://companysite.com/mobile [R=301,L]

редактировать: Я должен дать полное решение:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (android|BlackBerry)
RewriteCond %{HTTP_REFERER} !yoursite\.com
RewriteRule .* http://companysite.com/mobile [R=301,L]
...