如何解决手机和pc两个独立系统不同地址自动切换?

分类:Apache,问题集 | 作者:凹凸曼 | 发表于2015/11/12

之前做手机版的程序需要实现与PC系统不同地址之间切换。

再说现在手机版的流行了,有些系统可能不想在传统系统上再开发。独立出来更明确一些,依然数据共享。

手机版和PC版块切换方式可能部分人采用前端JS 来处理,

个人喜欢用服务端rewrite 。(当然前提条件是不在一个系统上,一个系统上就不需要这些了,程序判断,多做一套模板了)

假设依我博客为案例:

www.apoyl.com:站点默认代表PC系统域名

m.apoyl.com:代表独立的手机域名地址

1、PC地址 http://www.apoyl.com/ 对应 手机地址http:// m.apoyl.com//app/index

2、文章页面PC地址 http://www.apoyl.com/?p=1977  对应 手机地址http:// m.apoyl.com//app/view?p=1977

3、列表页面PC地址 http://www.apoyl.com/?cat=5 对应 手机地址http:// m.apoyl.com//app/list?p=cat

httpd.conf 配置如下:

<Directory “/data/DocumentRoot/default”>
Options FollowSymLinks
AllowOverride None

Require all granted
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.apoyl.com(.*)$ [NC]
RewriteCond %{HTTP_REFERER} !^http\:\/\/(m|www)\.apoyl\.com(.*)$ [NC]
RewriteCond %{HTTP_USER_AGENT} !ipad [NC]
RewriteCond %{HTTP_ACCEPT} “text/vnd.wap.wml|application/vnd.wap.xhtml+xml” [NC,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|erics|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]
RewriteRule ^(.*)index.php(.*)$ http://m.apoyl.com/app/view$2 [L,R=302]
RewriteCond %{HTTP_HOST} ^www\.apoyl\.com(.*)$ [NC]
RewriteCond %{HTTP_USER_AGENT} “(baidu.Transcoder|mini|android|blackberry|googlebot-mobile|iemobile|Mobile|ipad|iphone|ipod|opera mobile|palmos|webos|ucweb|Windows Phone|Symbian|hpwOS)” [NC]
RewriteRule ^(.*)index.php(.*)$ http://m.apoyl.com/app/list$2 [L,R=302]
RewriteCond %{HTTP_HOST} ^www\.apoyl\.com(.*)$ [NC]
RewriteCond %{HTTP_USER_AGENT} “(baidu.Transcoder|mini|android|blackberry|googlebot-mobile|iemobile|Mobile|ipad|iphone|ipod|opera mobile|palmos|webos|ucweb|Windows Phone|Symbian|hpwOS)” [NC]
RewriteRule ^(.*)$ http://m.apoyl.com/ [L,R=302]

</Directory>

RewriteCond 上面采用两个种方式

配置起来繁琐一些、优点就是不用修改原来的PC系统代码

 

本文出自 “凹凸曼” 博客,请务必保留此出处 http://www.apoyl.com/?p=1977

日志信息 »

该日志于2015-11-12 10:56由 凹凸曼 发表在Apache, 问题集分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

目前盖楼 (0)层:

发表评论 »

« »