3

クライアント用に 2 つのサイトがあります。1 つはモバイル サイト、もう 1 つは通常のサイトです。これらは両方とも別々の URL を持っています。

.htaccess を使用すると、モバイルからアクセスした場合にモバイル サイトにリダイレクトされるように、既に動作しています。私が今やりたいことは、ユーザーを通常のサイトに戻すリンクをモバイル サイトに置くことです。この設定は、設定されている Cookie によって記憶されます。

そして、そこから問題が発生します...

モバイル サイトの Cookie を設定できますが、通常のサイトにリダイレクトされると、クロスドメインが原因でその Cookie を認識できず、モバイル サイトに直接リダイレクトされます。

私は巧妙になろうとしており、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]
4

1 に答える 1

0

通常のサイトの実際の開始ページを指さないように、モバイル サイトのリンクを変更します。代わりに、「nomredir」などのページを作成してください。そのページにアクセスすると、チェックする Cookie が設定され、ユーザーが開始ページにリダイレクトされます。そうすれば、適切なドメインで設定された Cookie を取得し、特にそれを要求したユーザーに対してのみ取得できます。

于 2012-05-07T12:46:45.780 に答える