我们经常有这样的需求,需要通过自己的域名来包装某个专题或者是合作方的站点,比如:为了方便记忆希望http://topic.hmzxin.com/acts/2009_girl/index.php 推广时使用girl.cdqss.com这样的域名。这通常需要两个步骤:
1、解析域名到需要包含的站点;
2、合作方对服务器进行配置以便支持新的站点。
这种方式多少还是有些麻烦,有些时候这种方式根本就无法实现,比如:我们开通个人空间允许用于导入外部的网站,然后统一通过我们的个性域名进行访问,如:yemaozi.cdqss.com是个人空间,yemaozi.cdqss.com/taobao指向我的淘宝店,yemaozi.cdqss.com/paipai指向我的拍拍店等等,我们不可能让淘宝和拍拍进行相应的配置。所以,我们使用变通的解决办法,把域名解析到我们自己的服务器,然后根据访问的目录动态的导入不同的地址,在站点下建一个文件内容如下:
<?php
$host = $_SERVER['HTTP_HOST'];
$host_match_result = preg_match('/([^\.]+)\.cdqss\.com/i', $host, $host_matches);
//截取店铺类型
$url = $_SERVER['REQUEST_URI'];
$url_match_result = preg_match('/([^\/]+)/i', $url, $url_matches);
//安全检查并获取用户名,正确的访问例子为:http://yemaozi.cdqss.com/taobao
if(!$host_match_result || !$url_match_result){
header('Location:http://www.cdqss.com');
exit();
}
$username = addslashes($host_matches[1]); //执行转义操作;
$shoptype = addslashes($url_matches[1]); //执行转义操作
//查询对应的店铺地址
//$row代表查询的结果
//$url = $row['linkurl']; ,设$row['linkurl'] = 'http://www.taobao.com'
$url = 'http://www.taobao.com';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $username;?> - 的个性店铺</title>
</head>
<frameset frameborder="no" border="0" framespacing="0">
<frame src="<?php echo $url;?>" name="topFrame" scrolling="yes" noresize="noresize" id="topFrame" title="topFrame" />
</frameset>
<body>
</body>
</html>
这时当我们访问服务器时,就已经使用我们的域名进行访问了。Frameset可以很好的完成页面的自适应。其实使用iframe也可以实现,但是iframe在自适应的处理上非常麻烦,进行跨域访问时会有安全错误提示,所以解决很麻烦,感兴趣的可以参考下面的文章: