0

ここで説明する方法を使用してモバイル リダイレクトを作成することから始めましたが、完全に機能します。

ただし、次に行う必要があるのは、ホームページ以外のページで発生しないようにすることです。つまり、ユーザーがモバイル デバイスからホームページを読み込んだ場合、リダイレクトが発生するはずですが、モバイル デバイスから他のページを読み込んだ場合、リダイレクトは発生しません。

例:


ホームページの URL = リダイレクト


ブログ URL = リダイレクトなし

私たちについて URL = NO-redirect

などなど


これが私が現在持っているコードです:

# Check if this is the noredirect query string
RewriteCond %{QUERY_STRING} (^|&)m=0(&|$)
# Set a cookie, and skip the next rule
RewriteRule ^ - [CO=mredir:0:www.domain.com]

# Failed attempt at redirecting only homepage
RewriteCond %{HTTP_HOST}  ^(domain\.com|www\.domain\.com)$ [NC]
# Check if we're just going to the homepage - fail
RewriteCond %{REQUEST_URI} ^/(index.php)?$ 

RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
RewriteCond %{HTTP:Profile}       !^$ [OR]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]

# Check if we're not already on the mobile site
RewriteCond %{HTTP_HOST}          !^m\.

# Can not read and write cookie in same request, must duplicate condition
RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$) 

# Check to make sure we haven't set the cookie before
RewriteCond %{HTTP_COOKIE}        !^.*mredir=0.*$ [NC]

# Now redirect to the mobile site
RewriteRule ^(index\.php)?$ http://m.domain.com [R,L]

そして、それはうまくいきませんでした。私は何をしますか?

4

3 に答える 3

1

以下の書き換えルール.htaccessは、ドキュメント ルートのファイルでテストされました。m.domain.comおよびdomain.comを適宜置き換えます。

さらに、またはを追加するか、スクリプト言語 (この場合は php) を使用して Cookie を設定することにより、任意の URL に対してモバイルを強制的にオンまたはオフにすることが?m=0できます?m=1mredir

RewriteEngine On

# Put forced mobile state into 'mredir' cookie
RewriteCond %{QUERY_STRING} (?:^|&)m=([0-1])(?:&|$)
RewriteRule ^ - [CO=mredir:%1:.domain.com]

# Forced mobile? (m=1)
RewriteCond %{HTTP_HOST}    !^m\.domain\.com$
RewriteCond %{QUERY_STRING} (^|&)m=1(&|$) [OR]
RewriteCond %{HTTP_COOKIE}  ^.*mredir=1
RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$)
RewriteRule ^               http://m.domain.com [R=302,L]

# Forced regular? (m=0)
RewriteCond %{HTTP_HOST}    ^m\.domain\.com$
RewriteCond %{QUERY_STRING} (^|&)m=0(&|$) [OR]
RewriteCond %{HTTP_COOKIE}  ^.*mredir=0
RewriteCond %{QUERY_STRING} !(^|&)m=1(&|$)
RewriteRule ^               http://domain.com [R=302,L]

# Auto redirect to mobile if not forced above
RewriteCond %{HTTP_HOST} !^m\.domain\.com$
RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$)
RewriteCond %{HTTP_COOKIE} !.*mredir=0
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]
RewriteCond %{HTTP:x-wap-profile}%{HTTP:Profile} !^$ [OR]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv|palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda|xda-|up.browser|up.link|windowssce|iemobile|mini|mmp|symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
# Only auto-redirect on / or /index.php
RewriteRule ^(\/|index\.php)?$ http://m.domain.com [R=302,L]
于 2013-06-26T16:35:17.997 に答える
0

あなたの問題はここにあります:

RewriteCond %{REQUEST_URI} ^/index.php$ 
RewriteCond %{REQUEST_URI} ^/$

リクエスト uri は同時に/index.php AND にすることはできません。/この正規表現は、次のいずれかまたは両方に組み合わせる必要があります。

RewriteCond %{REQUEST_URI} ^/(index.php)?$ 
于 2013-06-21T20:15:44.010 に答える