php实现多个域名指向同一套系统,显示不同内容

  最近收到一个需求,要求我们开发的一套系统然后这套系统中可以实现多个域名指向这套系统,但是每个域名打开的内容还要显示对应域名的内容,网上找了几天发现只有一个叫“域名转发”的功能(具体不做介绍,百度有很多),“域名转发”只有顶级域名才能使用,感觉还不如直接页面跳转,而我们的需求是打开后点击内容页后域名还不能变,这时候我就考虑能不能通过程序来实现这个需求,通过我的构思是可以实现的

  本人的运行环境是:php+apache+mysql,框架用的是thinkphp3.2,如果是其他语言或其他框架那就可以看下我的实现思路,其他的语言实现也并不难

  我们程序的场景:在我们程序中有多个地区,每个地区都有不一样的内容,但是页面是一样的,主域名访问下就是显示默认主地区的内容,其他域名访问则是要显示对应的分区内容

  首先所有的域名是指向同一套系统的,所以这给了我很大的操作空间,因为最麻烦的就是怎样判断是要显示什么内容,当时我也是突然灵光一闪突然想到了什么,然后顺这往下想,然后就抓住了“域名指向同一套系统”这句话,随后我就想到了可以通过程序来获取来访域名,顺着这思路往下想,能获取到来访域名那我在数据库中设置所有域名要显示的东西,那需求不就解决了吗

  上面是实现思路,下面是实现过程

  php获取域名有内置方法:$_SERVER['SERVER_NAME']

  获取到来访域名后,然后就是匹配我在配置文件中的内置域名(主域名),如果是一样的那就显示默认内容

  如果域名不一致就先匹配数据库中存的对应地区的域名读取出地区id,然后就更新配置文件中的内置地区id

  实现代码:

 

  //判断输入的域名是否和配置域名一致   C('PROGRAM_DOMAIN_NAME_NOT_HTTP')配置文件中的域名

  if(C('PROGRAM_DOMAIN_NAME_NOT_HTTP') == $_SERVER['SERVER_NAME'])

  {

    return;//因为我是把方法封装了,所以就直接返回为空就好了

  }

  //查询出对应的id

  $data = M('area')->where('INSTR(url,'.$_SERVER['SERVER_NAME'].')')->getField('id');

  //更新对应的配置,对这种关系的方法做个解释,只会更新这次,这点需要注意

  C('AREAID', $data );

  实现思路说起来很长,但是最核心的代码就那么两句,其他要实现的内容就可以在这个基础上扩展

你可能感兴趣的:(php实现多个域名指向同一套系统,显示不同内容)