二级域名解析那些事及.HTACCESS指向帝国CMS子目录移动站的神奇魔法

二级子域名解析那些事

域名解析,本来是一件简单的事,例如常用的三种:

1.A记录解析

指向主机某个IP地址。

域名解析A记录

通常是解析带WWW的子域名(二级域名)或者@解析根域名,然后在指向类型里选择A记录,输入主机的IP地址(主机商提供)即可完成解析。

2.CNAME解析

指向某个主机别名(别名由主机服务商提供)。好处是当主机空间更换IP地址时,不需要重新去做域名解析。是否使用CNAME,要看不同的主机商空间环境而定。

CNAME域名解析

例如,解析WWW二级子域名,选择记录类型为CNMAE,然后指向一个别名。

3.解析一级域名,不带WWW

常识:以华哥个人网站为例,根域名只有一个,即xiaoyunhua.com,而像www.xiaoyunhua.com 或m.xiaoyunhua.com这样的域名,通通都是二级子域名。

根域名,也叫一级域名,解析就是使用一个符号:@。示例如下图。

一级域名的解析

如上,同样是A记录解析,只要把主机记录设为@就好。例如,如果把xiaoyunhua.com用@做了一级域名解析,那么输入xiaoyunhua.com就可以访问网站,而如果没有设置一级域名解析,那输入网址就会.....显示一片空白吧。

此外,从SEO的角度来看,最好不要一级域名和二级域名火力齐开,通通A记录到底,指向同一个IP,打开都是同一个网站(搜索引擎有可能将其视为两个网站从而分散权重或网站内容重复),这对SEO不太友好。一种方法就是确定一个主域名,例如WWW的主域名,对一级域名则进行URL转发解析,用的符号还是@。如下:

URL跳转解析

如上,你可以解析xiaoyunhua.com这个一级域名,当用户在浏览器输入时,自动跳转到带WWW的,即www.xiaoyunhua.com。

(当然,你也可以反着来,将带WWW的跳转至一级域名。)

至于像泛域名解析,方法很简单,只要将@符号换成*符号即可,不过通常不需要设置,除非你的域名很知名,怕有很多人在浏览器中输入出错,损失部分流量,待到那时真有需求时,再去参考使用吧。

二 帝国CMS二级域名解析至网站目录的.htaccess操作

用帝国CMS搭建网站,其中PC端和手机端分开,手机端使用m.xxxxxxx.com这样的方法,通常方法是在主机空间里建一个子目录,如msite,当输入m.xxxxxxx.com这样的域名时,指向空间里的msite目录。

m二级域名解析方法

m二级域名要如何解析呢,见图。

m二级域名解析

咦,怎么和WWW一个样,没区别?对,就是一样,就是没有区别。

再次回到那个一级和二级域名常识,套路就是一个:WWW是怎样解析的,m就是依葫芦画瓢同样操作,因为原理是,两者都是二级域名嘛~

可是解析了M,有的自动就生效,有的不生效——输入m.xxxxxx.com打开的还是PC网站,这要怎么办。

华哥的回答是:会不会自动生效,是和主机空间的环境设置不同而定的。

注意,以下的内容已经离开了域名解析这个环节,进入了网站主机空间的设置管理。

云虚拟主机子域名管理

自动生效是在主机管理后台,可以设置子域名。

主机管理子域名

以华哥使用的野草云云虚拟主机为例,只需在后台添加子域名,然后在帝国cms中的网站访问端的手机访问端地址设置匹配就好。子域名就自然生效了。

子域名与帝国cms手机端

有些主机管理系统,可以直接解析子域名的同时,选择设置某个目录。

阿里云虚拟主机子域名设置

可是如果网站放在阿里云的标准主机或其他空间商的虚拟主机里,可能就不会这样方便了。因为主机管理系统似乎不提供这样的功能。那只有用到神奇而恐怖的.htaccess文件了。

这是一个通用模板:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?要绑定的域名$ 
RewriteCond %{REQUEST_URI} !^/目录名/ 
# 不要改以下两行. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /目录名/$1 
# 目录名/ 后面是首页文件index.php, index.html…… 
RewriteCond %{HTTP_HOST} ^(www.)?要绑定的域名$ 
RewriteRule ^(/)?$ 目录名/index.php [L]

以下,是华哥所套用的实例。

RewriteEngine on

#设置m指向根目录的子目录/mphone

RewriteCond %{HTTP_HOST} ^m.hnxhd.cn$
RewriteCond %{REQUEST_URI} !^/mphone/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mphone/$1
RewriteCond %{HTTP_HOST} ^m.hnxhd.cn$
RewriteRule ^(/)?$ mphone/ [L]

.htaccess文件中的这段内容看起来如同天书,不知所云,不过放上去测试,第一天是成功了,看来真是神奇啊,如同施展了魔法一样!

可是第二天,输入移动端网址时,跳出一片空白打不开了。filezilla又把.htaccess文件再检查和上传一次,100%完成任务,可是一眨眼,服务器端的.htaccess文件就消失不见了。糟糕,难道是没有权限,服务器自动删除,好怕,这可咋整。

好在搜索资料最后发现,原因竟是服务器把.htaccess文件给隐藏了。

服务器把.htaccess隐藏

于是在filezilla菜单中,选择强制显示隐藏文件,这样就可以看到.htaccess文件了。待.htaccess文件发挥正常,宝宝就可以安心下班咯。

(我想,对于精通网络的服务器管理人员来说,这是小case,熟练于心。而对于像我们这种非专业人士来说,毕竟不是天天弄这个,虽然有时误打误撞也能搞定,但最好还是记录下来,以备以后还要用到。)

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注