2012-04-03 15 views
0

私は自分の質問を研究してきましたが、多くの点でそれを書き換えましたが、まだ答えは見つからないようです。それはできないこともあるかもしれない、うまくいけば誰かが私を助けることができる。私は.htaccessファイルにはかなり新しいですが、私は自分の会社のサイトのモバイルウェブサイトを作成しています。.htaccess redirect、exclude subdomain

私がしたいことは、あなたがモバイルサイトに行くときに、私たちの完全な企業サイトまたはモバイルサイトを見るオプションを与えることです。そのページにリダイレクトされていますが、完全なサイトを表示するように選択した場合、完全なサイトを表示する代わりに、同じページにリダイレクトされます。私はサブディレクトリ "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] 

ありがとうございます!

+0

ユーザーコンテンツを取得する唯一の方法は、env-var HTTP_COOKIE(http://www.zytrax.com/tech/web/env_var.htm)ですが、ほとんどのiPhone Cookieは無効になっています。 私はスクリプトにチェックを入れて、あなたのウェブサイトのモバイル版を使用したいのかどうかを確認するためにセッションにフラグを設定します。 –

+0

ありがとう!それを調べます:) –

+0

PHPを使用してスクリプトに実装したい場合は、$ _SESSIONを使用して、リダイレクトのフラグとヘッダー( "location:[url]")を保存できます –

答えて

1

何人かの人々が、それは少しトリッキーです。試料溶液は次のようになります。もちろん

## 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変更し、mobilecookieを注入するためのjsまたはいくつかの他の方法を使用する必要があります。

個人的には、私はHTTP_REFERRER条件がもっと好きです。

0

リファラーを確認することもできると思います。リファラーが自分のサイトの場合、リダイレクトは行いません。

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]