2011-06-28 7 views
3

私はクライアント用に2つのサイトを持っています。 1つはモバイルサイトで、もう1つは通常のサイトです。これらは両方とも別個のURLを持っています。htaccessは、クッキーを使って複数のドメインにリダイレクトし、すべてを記憶します。

.htaccessを使って私は既にそれを稼働させているので、あなたがモバイルに入ったら、モバイルサイトにリダイレクトされます。私が今したいのは、モバイルサイトにリンクを張って、ユーザーを通常のサイトに戻すことです。この設定は、クッキーが設定されていることによって記憶されます。私はモバイルサイトのためにクッキーを設定することができますが、そのは、通常のサイトにリダイレクトするとき、それはクロスドメインのためにそのクッキーを参照し、右リダイレクトカント

し、問題がでてくるのthats ...

モバイルサイトに戻る

私は賢明になり、ドメインに依存して動的にCookieの配置を行い、通常のサイトにリダイレクトするときは、Cookieを設定してリダイレクトしないようにします。

ここに、私が取り組んでいるmod_rewriteコードがあります。誰かが私が間違って行ってきたところを指摘したり、これはことも可能である場合、それは壮大な

# Write cookie if redirected 
RewriteCond %{QUERY_STRING} (^|&)mredir=0(&|$) 
RewriteRule^- [CO=mredir:0:%{HTTP_HOST}] 

# redirect if mobile device && !mredir 
RewriteCond %{HTTP_HOST} ^normalURL.com$ 
RewriteCond %{HTTP_COOKIE} !mredir=0 
RewriteCond %{QUERY_STRING} !(^|&)mredir=0(&|$) 
RewriteCond %{REQUEST_URI} !^/mobile/ 
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC] 
RewriteRule ^(.*)$ http://mobileURL.com/ [R=302,QSA,L] 

# point at mobile site IF !mredir 
RewriteCond %{HTTP_HOST} ^mobileURL.com$ 
RewriteCond %{HTTP_COOKIE} !mredir=0 
RewriteCond %{QUERY_STRING} !(^|&)mredir=0(&|$) 
RewriteCond %{REQUEST_URI} !^/mobile/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d [OR] 
RewriteCond %{REQUEST_URI} ^/ 
RewriteRule ^(.*)$ mobile/$1 [L,QSA] 

# IF mredir, redirect normal site 
RewriteCond %{HTTP_HOST} ^mobileURL.com$ 
RewriteCond %{HTTP_COOKIE} mredir=0 [OR] 
RewriteCond %{QUERY_STRING} (^|&)mredir=0(&|$) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d [OR] 
RewriteCond %{REQUEST_URI} ^/ 
RewriteRule ^(.*)$ http://normalURL.com?mredir=0 [L,QSA] 

# point at normal site 
RewriteCond %{HTTP_HOST} ^normalURL.com$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
+0

私はあなたの頭脳を.htaccess/mod_rewriteで叩くのではなく、PHP側から理解する方が良いと思うと思います。 –

+0

モバイルサイトとデスクトップサイトで全く異なるドメインを使用していますか? 'mobile.mysite.com'や' www.mysite.com'のようなサブドメインだけでなく、 – Seybsen

+0

ええ、その2つの別々のURL:mysite.mobiとmysite.com。クロスドメインのクッキーの読み取りルールのため、私がやろうとしていたことをする方法がないので、ユーザーがフルバージョンを要求してリダイレクトを行うと、上記のスクリプトを変更してモバイルサイトにCookieを設定しました。 –

答えて

0

だろうができれば、私はを指すないようにモバイルサイトにリンクを変更しますので、今、この権利を介して脳の痛みを持っています通常のサイトの実際の開始ページ。代わりに、例と呼ばれるページを作成します。 "nomredir"。そのページにアクセスするときは、チェックするクッキーを設定して、ユーザーを開始ページにリダイレクトする必要があります。こうすることで、適切なドメインにCookieが設定され、それを具体的に要求したユーザーのみが取得されます。

関連する問題