最近弄了个电影频道,想绑定二级域名有逼格些。但阿里的虚拟主机默认没有绑定域名到子目录这个功能,在网上搜罗一番,测试了不少方法。最终淘到下面这个可行的方案来分享给大家。
重要:空间服务器必须支持apache的rewrite功能,只有这样才能使用.htaccess,如果你的空间是Linux服务器一般默认都开启了的。
写规则到.htaccess文件
在网站根目录里找到.htaccess下载下来打开,加入下方代码。如果你的网站根目录没有.htaccess文件,则在本地建个txt文件填上代码最后改名上传即可。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# 绑定video.wosn.net 到子目录video
RewriteCond %{HTTP_HOST} ^video\.wosn\.net$ [NC]
RewriteCond %{REQUEST_URI} !^/video/
RewriteRule ^(.*)$ video/$1?Rewrite [L,QSA]
#如果需要绑定多个, 则重复上三行代码并更改一下域名、目录名
</IfModule>
完成上面的操作,你可能发现二级域名真的可以访问子目录啦。确实可以了,但有一个小bug存在。那就是在浏览器上访问主域名+绑定的域名目录也可以访问。如果你比较满意这效果,那么你可以忽略以下步骤。
在每一个绑定的目录中 如video目录中 也增加一个 .htaccess 文件
我这里就是在video目录下的 .htaccess 文件里加如下代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#只许绑定的域名访问
RewriteCond %{HTTP_HOST} !^video\.wosn\.net$ [NC]
RewriteRule (.*) http://video.wosn.net/$1 [L,R=301]
#对绑定目录下与 同名的目录的处理
RewriteCond %{REQUEST_URI} ^\/video\/ [NC]
RewriteCond %{QUERY_STRING} !^(.*)?Rewrite
RewriteRule ^(.*)$ /%{REQUEST_URI}/%{REQUEST_URI}/$1?Rewrite [L,QSA]
</IfModule>
二级域名与子空间互绑
首先,设置二级域名的解析记录的A记录到主机的IP上。
然后,在免费空间上添加该域名。
完成以上步骤,就over了。
评论