1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > 域名 > 正文

域名

绑定多域名实现子站点的方法

1987web2022-12-05域名289
本文来自新浪云用户程汉投稿新浪云应用简称SAE作为国内最早的云应用平台之一,产品深受广大开发者的喜爱,无论是性能还是稳定性都是数一数二的,今天分享一篇SAE绑定多个域名实现类似子站点的功能,本

本文来自新浪云用户程汉投稿

新浪云应用简称 SAE 作为国内最早的云应用平台之一,产品深受广大开发者的喜爱,无论是性能还是稳定性都是数一数二的,今天分享一篇 SAE 绑定多个域名实现类似子站点的功能,本方法仅支持采用唯一入口的网站应用。

所谓唯一入口就是网站的所有请求都通过一个文件进入,目前流行的PHP框架都是采用唯一入口,例如 ThinkPHP 、CI 、Lararel 等所有请求都是通过 index.php 文件进行访问。

绑定多域名实现子站点的方法

首先将需要的域名绑定至应用,这里以 a.com   b.com    c.com 作为示例,用户的整个访问流程如上图所示,所有请求都通过根目录下的 index.php 进入,index.php 通过判断host_name决定载入哪个入口文件实现类似子站点的功能。

绑定多域名实现子站点的方法

整个应用中文件的目录结构如上图所示 root 表示应用根目录。

实现子站点功能需要URL伪静态支持,我们通过修改 config.yaml 文件开启配置 UrlRewrite ,下面是配置代码

name: aowana.com
version: 1
handle: 
- rewrite: if( path~"^/(.*)$") goto "/index.php?$1 [L, QSA, L]"

这样一来无论是 a.com   b.com  c.com 下的访问都会进入根目录下的 index.php 文件,既然 index.php 已经接管所有访问,下一步我们通过 index.php 进入分配决定访问哪个子站点,下面是 index.php 代码示例。

<?php

# 获取域名
$host = $_SERVER['HTTP_HOST']; 

# 当前路径
$path = dirname(__FILE__); 

/*
 * 通过 $host 重新定义 $path
 * 域名未定义时禁止访问
 */

switch ( $host )
{
	case 'a.com':
		$path .= '/a.com';
		break;

	case 'b.com':
		$path .= '/b.com';
		break;

	case 'c.com':
		$path .= '/c.com';
		break;

	default :
		exit('域名未定义,禁止访问!');
		break;
}

# 域名子站点的入口
require( $path . '/home.php' );

通过入口文件控制访问实现类似子站点的功能,是不是很简单。