OpenSNS如何使用子域名(二级域名)解析和访问手机版网站
待回答有的童鞋,包括我,在需要使用一个子域名专门来访问手机网站,这可怎么办呢?
小逗逼我经过摸索,发现至少有四种方法可以解决这个问题,这里我只暂时介绍正数第二种简单的方法,原因之一,其它的方法在结合opensns这套系统及thinkphp框架时,并不是最优选择,并且容易出错,并且小笔也已经发现了好几个问题;原因之二,服务器环境可能不同。
问题:举例我有一个顶级域名:www.os.com,想使用一个子域名,如 m.os.com 专门访问手机版网站,而不是访问一长串的URL网址,造成维护和用户不便。不论是小白,还是程序猿都会遇到的问题诸如,CNAME不能使用,子域名部署有目录的问题,还有URL重写的问题,也有服务器配置的问题,总之,是很大的不方便。
目的:直接通过 m.os.com 访问到手机版网站,并且opensns系统不会出现差错。
方法:
自行在域名DNS管理中分配好二级域名,并指向服务器IP,如使用 www.os.com为顶级域名, m.os.com为需要正确解析的二级域名。CNAME直接放弃。另外,关于运营商的各种政策规定之类的,请具体咨询运营商。
以phpstudy 2014 为例,IIS可依此参考配置。在phpstudy中自行配置好域名解析,并保存。提醒确保:
(1)www.os.com 域名已经解析成功
(2)m.os.com 域名已经解析并保存,重点是,不用指向任何具体控制器的目录,直接使用原站根目录
进入服务器(不能进入服务器的,可以和服务商联系操作,否则你就悲了)打开phpstudy控制面板,依此步骤:
“其它选项菜单” -> “打开配置文件” -> vhosts-conf
打开vhosts.conf文件,你会看到如下代码:
<VirtualHost *:80>
DocumentRoot "D:\wwwroot"
ServerName www.os.com
ServerAlias os.com
<Directory "D:\wwwroot">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "D:\wwwroot"
ServerName m.os.com
ServerAlias
<Directory "D:\wwwroot">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
看清小笔给你用红色标注的代码,要注意:
(1)域名解析正确
(2)在相同目录中
(3)AllowOverride 此选项必须是ALL,不能是NONE,提醒,如果是NONE,你需要修改httpd.conf文件的“重写”权限,具体可百度。
5. 将上述第二个原标签,即包含 m.os.com 的<VirtualHost *:80></VirtualHost>内的代码修改为:
<VirtualHost *:80>
ServerName m.os.com
RedirectMatch ^/(.*)$ http://www.os.com/index.php?s=/mob/weibo/$1
</VirtualHost>
小提醒:不要续写一段代码,而是直接修改;
重点提醒:红色代码处即是URL重写代码,跳转位置即是手机网页的首页位置,如果微博作为首页则跳转到原顶级域名访问的手机版微博首页。如果想跳转到其它手机页面,请咨询我最喜爱的小陆姐姐,嘿嘿 @_@
6. 保存vhosts.conf文件,重启Apache,速速在浏览器中输入 m.os.com 子域名,你会发现,你可以直接访问手机网站了,只不过,域名发生了跳转,即跳转到了
http://www.os.com/index.php?s=/mob/weibo/index.html,事实上,使用手机访问的用户,是不在乎URL是什么样的。
但是,如果你想使用 http://m.os.com/index.php?s=/mob/weibo/index.html,那么小笔概述一下其它几个方法。
其它方法:
使用ThinkPHP二级域名部署,具体请阅读ThinkPHP手册,重点需要打开和修改如下路径文件:
ThinkPHP -> Conf -> convention.php
(1)在这个配置文件中,有子域名部署的开关和规则
(2)修改'APP_SUB_DOMAIN_DEPLOY'和'APP_SUB_DOMAIN_RULES'
(3)在修改时即可将 m.os.com 子域名解析到对应的手机模块中,也可以直接解析到对应的控制器中,包括传参。
其它配基础置方法不变,修改完成后,m.os.com域名将取代www.os.com成为手机网站访问的域名了,并且能够成功访问。不过据小笔所知,若想以子域名完美使用opensns的话,还有一串代码得写。
2. 使用URL重写规则,打开根目录下Rewrite文件夹中的.htaccess文件,在系统和环境已经可以伪静态重写的前提下,为m.os.com 编写URL访问规则,目的是使用www.os.com的完整路径。里面已有写好的一些代码可以参考,目的是这样,可以在使用m.os.com访问手机网站时,仍旧以顶级域名访问手机网站的形式出现。这样,可以不用修改Apache设置。
3. 第三个方法,就是小笔认为的正数第一种最简单的方法,官方在手机版开发中,在后台加入二级域名绑定规则,直接给用户使用。你懂的。
其它说明:
IIS的配置类似,如果想使用子域名访问其它模块、控制器,第一种方法就不好了,比如微博使用w.os.com访问的话,则最好使用子域名部署和其它分组部署方式,祝你好运。
另,如果希望用户在访问时,根据终端判断使用PC站还是手机站,我想,其它程序猿哥哥会补充。
请登录后回答