共计 1846 个字符,预计需要花费 5 分钟才能阅读完成。
1,起因
在一星期前吧,大波说已然我们有了自个的服务器,二级域名了。能够思考如何每人一个域名,别离指向我们各自的空间。主意挺好,避免我们个人的东西放在同一主页上。那就做吧
2,第一次尝试
(1)在域名在万网买的,他们有个服务是支持泛域名解析。选择这个服务后,所有的三级域名 www.*.xin3e.com 都可以指向 www.xin3e.com 的 IP 地址。
(2)按照这个链接的方法进行尝试:http://hsst.blog.sohu.com/52046690.html
因为 Ubuntu 下,Apache2 的配置文件及目录结构不大一样,所以 mods-avalilable 下的是可用的模块。而真正启用了的模块是在 mods-enable 目录底下的。自己创建软连接实现启用 rewrite 模块。
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
(3)sudo vi /etc/apache2/sites-enabled/000-default
将其中所有的 AllowOverride None 修改成 AllowOverride All.
备注:000-default 实则为 sites-available/default 的链接,而 AllowOverride None 则会完全忽略.htaccess 文件,rewrite 规则就不能生效
(4)在 httpd.conf 文件末尾加上类似以下配置:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[a-zA-Z0-9]+\.xin3e\.com$
RewriteRule ^$ /%{HTTP_HOST}
RewriteRule ^/([a-zA-Z0-9]+)\.xin3e\.com/?$ /web/zyb/index [R]
(5)重启 apache,没有效果。
3,第二次尝试
(1) 删除上一次第(4)步在 httpd.conf 文件的操作。原 apache2 的 httpd.conf 文件是空的,现只保留 ServerName localhost
(2) 配置虚拟主机的目录。
什么是虚拟主机(Virtual Host)。所谓的虚拟主机,基本上就是“ 让你的一台服务器上,有好多个‘主页面’存在。也就是说,硬件实际上只有一台主机,但由网址上来看,则视乎有好多台主机存在的样子 ”。举个例子:
www.xin3e.com ==> IP/www/index.php
IP/www 目录下还有 IP/www/zyb,IP/www/fb 两个目录。那么:
www.zyb.xin3e.com ==> IP/www/zyb
www.fb.xin3e.com ==> IP/www/fb
两个域名指向同一 IP 地址,进去则是不同的信息内容。这就是虚拟主机的主要功能, 它可以让你的多级域名对应不同的主网页目录 (DocumentRoot 参数), 所以看起来像有多台实际主机的样子。
有 1) 基于 IP 地址的虚拟主机配置,2) 基于 IP 和多端口的虚拟主机配置,3) 单个 IP 地址的服务器上基于域名的虚拟主机配置,4) 在多个 IP 地址的服务器上配置基于域名的虚拟主机。今天只展示单个 IP 地址的服务器上基于域名的虚拟主机配置。
(3) 修改配置文件 /etc/apache2/sites-available/default
添加:
<VirtualHost *:80>
ServerName www.zyb.xin3e.com
DocumentRoot /home/normal/website/zyb
ServerAlias zyb.xin3e.com
ErrorLog /var/log/apache2/error-zyb.xin3e.com.log
</VirtualHost>
Apache 中涉及到的相关选项说明:
ServerName(设定虚拟主机的名称)
DocumentRoot(指定虚拟主机的网站主目录)
ServerAlias(设定虚拟主机的別名)
ErrorLog(虚拟主机发生错误时要记录在哪个目录, 可不设)
(4)保存,重启 apache2
sudo /etc/init.d/apache2 restart
(5)测试,成功。
补白:这是大波一星期前给我提的想法,上星期尝试失利后,一星期没找到合适的时刻。今天给了个了解。本来虚拟主机装备中通常都包括进行目录的具体装备,但我还不甚了解其效果和必要性。暂时未处理。