最近,傻傻,的,发现有些东西,挺好玩的。为什么慧聪企业注册就为每个企业分配了域名呢?
http://bentong2006.b2b.hc360.com/
www.gannan0797.com
前两天为了让Sylvan的用户能够更方便的记忆自己的个人空间的地址,研究了一下Apache的URL Rewrite功能,实现了每个用户可以把自己的用户名作为二级域名的虚拟主机的设定。
其实,之前也用过URL Rewrite模块,只不过只是用来转换URL中传入的参数的。这次用它来做虚拟主机,其实原理是一样的。
先说一下目的。我想做到的是用户在浏览器中输入类似 http://wells.osall.com/test.php?a=1&b=2 这样的URL地址时,把蓝色部分的用户名作为一个参数并转到页面在服务器上的真正的实际地址 /path/to/file/test.php?un=wells&a=1&b=2 ,并且要让用户在浏览器中看到的URL地址不发生改变。
要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.osall.net 和 *.osall.com全部解析到了我的这台Linux Server上。
然后,看一下我的Apache中关于*.osall.com的虚拟主机的设定。
#*.com,*.osall.net
<VirtualHost *:80>
ServerAdmin webmaster@osall.com
DocumentRoot /home/www/www.osall.com
ServerName dns.osall.com
ServerAlias dns.osall.net osall.com osall.net *.osall.com *.osall.net
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/osa/a_wosa_log.%Y%m%d 86400" common
ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/osa/e_wosa_log.%Y%m%d 86400"
<Directory /home/www/www.osall.com>
AllowOverride None
Order deny,allow
#AddDefaultCharset GB2312
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.osall\.(com|net)$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.osall\.(com|net)(.*)$ /home/www/www.osall.com/sylvan$3?un=$1&%{QUERY_STRING} [L]
</IfModule>
</VirtualHost>
在这段设定中,我把*.osall.net和*.osall.com 的Document Root都设定到了 /home/www/www.osall.com
但是,继续看下去,看到<IfModule mod_rewrite.c>...</IfModule>配置了吗?在这里我就配置了URL Rewrite规则。
RewriteEngine on #打开URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.osall.(com|net)$ #匹配条件,如果用户输入的URL中主机名是类似 xxxx.osall.com 或者 xxxx.osall.net 就执行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用户输入完整的地址(GET方式的参数除外)作为参数传给下一个规则,[C]是Chain串联下一个规则的意思
RewriteRule ^([^.]+).osall.(com|net)(.*)$ /home/www/dev.osall.com/sylvan$3?un=$1&%{QUERY_STRING} [L] # 最关键的是这一句,使用证则表达式解析用户输入的URL地址,把主机名中的用户名信息作为名为un的参数传给 /home/www/dev.osall.com目录下的脚本,并在后面跟上用户输入的GET方式的传入参数。并指明这是最后一条规则([L]规则)。注意,在这一句中指明的重写后的地址用的是服务器上的绝对路径,这是内部跳转。如果使用http://xxxx这样的URL格式,则被称为外部跳转。使用外部跳转的话,浏览着的浏览器中的URL地址会改变成新的地址,而使用内部跳转则浏览器中的地址不发生改变,看上去更像实际的二级域名虚拟服务器。
这样设置后,重起Apache服务器,测试一下,就大功告成了!
分享到:
相关推荐
### Windows 下 Apache 配置二级域名详解 #### 一、前言 在互联网时代,网站建设和维护成为企业和个人展示自己、提供服务的重要手段之一。在众多服务器软件中,Apache因其稳定性高、配置灵活等特点被广泛使用。...
1. **域名解析**:系统需要与DNS(Domain Name System)进行交互,将主域名下的二级域名映射到相应的IP地址或服务器路径。这通常通过PHP的DNS解析库如`dns_get_record()`函数来实现。 2. **数据库管理**:系统需要...
DNS服务器将二级域名映射到特定的IP地址,使得用户可以通过二级域名访问服务器上的内容。这通常需要配置DNS记录如A记录或CNAME记录。 2. **虚拟主机配置**:在服务器端,需要配置虚拟主机来处理不同的二级域名请求...
系统可能包含域名解析配置,用于将二级域名映射到相应的服务器路径。这通常涉及到DNS(域名系统)设置,需要在DNS服务器上添加A记录或者CNAME记录。 5. **源码解析**: 由于标签提到“H5”,我们可以推测该系统的...
"老枪二级域名系统朴素版"是一个针对商业编程场景设计的源码实现,它提供了一个基础但功能完整的二级域名管理解决方案。本文将深入探讨这个系统的结构、工作原理及其关键代码,以帮助读者理解和应用此类系统。 一、...
总的来说,【PHP 程序】菁菁二级域名系统 v1.0_qqymv1.0 包含了PHP编程、Web服务器配置、数据库管理、用户认证、域名解析、安全性等多个IT领域的知识,为网站提供了一个强大的二级域名解决方案。
3. 数据库管理:存储所有二级域名及其映射信息,可能使用MySQL等关系型数据库。 4. 安全机制:确保只有授权用户能进行域名操作,可能通过用户名和密码验证或者更复杂的认证方式。 5. 日志记录:跟踪系统的操作和异常...
总之,【雨过星晴二级域名系统v1.0_xydns10_PHP项目源码】提供了一套完整的二级域名管理系统解决方案,涵盖了从域名创建、管理到安全防护的多个层面。开发者可以通过理解和掌握其工作原理,进一步提升网站的运营效率...
3. 路由机制:PHP源码可能包含URL路由处理,将二级域名映射到对应的业务逻辑或文件路径,实现不同二级域名访问不同内容。 4. 用户认证和权限控制:对于一个多用户系统,用户认证和权限管理至关重要。项目可能实现了...
总之,"PHP整站源码-[主机域名]菁菁二级域名系统 v1.0_qqymv1.0.zip"是一个全面的解决方案,适合想要搭建二级域名管理平台的开发者或企业。通过学习和理解其内部工作原理,可以提升对PHP编程和域名管理系统的认识,...
2. Host Manager:用于管理Tomcat的虚拟主机,配置不同的域名映射到不同的Web应用。 五、常见问题及解决方案 1. 端口冲突:检查是否已有其他服务占用Tomcat的默认端口(8080),修改server.xml中的Connector配置。 ...
- **CGI动态网页**:针对CGI脚本的编写和调试提供解决方案。 - **.htaccess文件**:解释如何使用`.htaccess`文件进行局部配置。 - **服务器端包含(SSI)**:介绍如何使用SSI来嵌入动态内容。 - **用户网站目录的...
3. 子域名创建:支持创建二级域名,并将它们指向特定的子目录,实现不同业务的细分。 4. 访问权限设置:可以设定特定域名的访问权限,如IP限制、访问时间限制等。 5. SSL证书管理:对于需要HTTPS加密的网站,系统...
- 对于生产环境,考虑使用更现代的操作系统和Web服务器软件,如Windows Server和IIS新版本或其他开源解决方案如Apache或Nginx。 通过以上步骤,你可以成功地在Windows XP Professional上搭建一个基于IIS的内网WEB...
- 对于需要访问Openfire服务器的其他机器,同样需要在它们各自的`hosts`文件中添加相应的IP地址和域名映射记录。 ##### 2.2 安装Openfire ###### 2.2.1 安装 - 下载并运行安装程序`openfire_3_6_4.exe`,在安装...
#### 二、常见问题及解决方案 1. **Tomcat无法启动:** - 检查`JAVA_HOME`是否正确设置。 - 确认端口8080没有被其他应用程序占用。可以使用命令`netstat -anb`查看端口占用情况。 - 修改`conf/server.xml`中的`...