单一主机条件下根据域名跳转到逻辑意义上的不同web应用

需求:假设一家小公司,申请了域名site.com,但是只有一个虚拟主机空间。为了节约成本,现在希望通过

三个次级域名在上述的虚拟主机空间部署其三个应用:1.针对客户的企业销售系统 2.针对企业内部员工的邮件系统

3.企业销售系统的后台管理系统。(假定访问此三个应用的次级域名分别为:www.site.com、mail.site.com、admin.site.com)

 

知识点:1. $_SERVER[‘HTTP_HOST’]  (当前请求头中的HOST)

         2. strpos($haystack, $needle)

本地测试:(Windows 环境下)

1.     设置C:\Windows\system32\drivers\etc\hosts

www.site.com 127.0.0.1

mail.site.com127.0.0.1

admin.site.com127.0.0.1

2.     注意:第一步中,XP操作系统默认情况下在目录C:\Windows\system32\drivers\etc\是看不到hosts文件的


需要取消勾选”我的电脑->工具->文件夹选项->查看->隐藏受保护的操作系统文件”,此时会出现hosts文件


3.     XP系统下,该文件属性为”只读”,取消勾选只读属性

并在其中添加如下几项;


 

4.     项目目录结构如下

/--root

/--siteBranch

       |--admin.php

       |--mail.php

       |--www.php

|--index.php

5.     源代码

/index.php

<?php
     $hostInfo = $_SERVER['HTTP_HOST'];
 
     if(strpos($hostInfo, "mail.site.com")!== false ){
     <span style="white-space:pre">	</span>header("location:./siteBranch/mail.php");
 
     }else if(strpos($hostInfo,"www.site.com") !==false ){
        header("location:./siteBranch/www.php");
 
     }elseif(strpos($hostInfo, "admin.site.com") !==false ){
         header("location:./siteBranch/admin.php");
     }
?>


/siteBranch/admin.php

<?php
<span style="white-space:pre">	</span>echo "Welcome to admin.site.com";
?>

/siteBranch/mail.php

<?php
        echo "Welcome to mail.site.com";
?>

/siteBranch/www.php

<?php
       echo "Welcome to www.site.com";
?>


6.     本地测试结果(本地web服务器使用的端口为8090)

在浏览器地址栏中输入www.site.com:8090后输入回车


在浏览器地址栏中输入admin.site.com:8090后输入回车

 

在浏览器地址栏中输入mail.site.com:8090后输入回车

 

7.     注意:

本例只用于说明原理。另外判断待查字符串中是否存在字串strpos(),不能将其和0用”>=”做比较,因为false == 0返回true。而false是待查字符串中不包含某字符串的情况

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值