Redirect mobile devices to alternate version of my site

后端 未结 10 1320
滥情空心
滥情空心 2020-12-02 15:08

We\'ve got an alternate version of out website ready for mobile devices. The content we serve is different and it works well.

What is the best way to detect which v

10条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-02 15:29

    here is the working solution

    RewriteEngine On
    RewriteBase /
    
    #http://stackoverflow.com/questions/3680463/mobile-redirect-using-htaccess
    # Check if mobile=1 is set and set cookie 'mobile' equal to 1
    RewriteCond %{QUERY_STRING} (^|&)mobile=1(&|$)
    RewriteRule ^ - [CO=mobile:1:%{HTTP_HOST}]
    
    # Check if mobile=0 is set and set cookie 'mobile' equal to 0
    RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
    RewriteRule ^ - [CO=mobile:0:%{HTTP_HOST}]
    
    # cookie can't be set and read in the same request so check
    RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
    RewriteRule ^ - [S=1]
    
    # Check if this looks like a mobile device
    RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
    RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC,OR]
    RewriteCond %{HTTP:Profile}       !^$
    RewriteCond %{QUERY_STRING} !^mobile=0(?:&|$)
    # Check if we're not already on the mobile site
    RewriteCond %{HTTP_HOST}          !^m\.
    # Check to make sure we haven't set the cookie before
    RewriteCond %{HTTP:Cookie}        !\mobile=0(;|$)
    # Now redirect to the mobile site
    RewriteRule ^ http://m.yourdomain.com%{REQUEST_URI} [R,L]
    
    # Go back to full site
    RewriteCond %{HTTP_HOST} ^m\.
    RewriteCond %{QUERY_STRING} (?:^|&)mobile=0(?:&|$)
    RewriteRule ^ http://yourdomain.com%{REQUEST_URI} [R,L]
    
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [NC,L]
    
    RewriteRule ^.*$ index.php [NC,L]
    

提交回复
热议问题