`
beyondhjjyt
  • 浏览: 39770 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

thinkphp二级域名配置

 
阅读更多

ThinkPHP支持分组的二级域名部署,该功能可以使项目中的多个分组呈现为二级域名的形式,例如经过配置二级域名部署,可以把:
http://domain.com/index.php/Admin/或者http://domain.com/Admin/
变为 http://admin.domain.com/ 访问方式。
先配置域名, 以 apache为例 , 配置如下: #主域名


  1. DocumentRootD:\htdocs\www ServerNamedomain.com


#子域名

  1. DocumentRootD:\htdocs\www ServerNameadmin.domain.com


然后配置host, 以windows为例编辑C:\WINDOWS\system32\drivers\etc\hosts
 文件,增加下面两行:

  1. 127.0.0.1domain.com 127.0.0.1admin.domain.com


接下来修改程序的配置文件config.php如下

  1. 'APP_GROUP_LIST'=>'Home,Test,Admin','DEFAULT_GROUP'=>'Home','APP_SUB_DOMAIN_DEPLOY'=>1,//开启子域名配置 /*子域名配置 *格式如:'子域名'=>array('分组名/[模块名]','var1=a&var2=b'); */ 'APP_SUB_DOMAIN_RULES'=>array( 'admin'=>array('Admin/'),//admin域名指向Admin分组 'test'=>array('Test/'),//test域名指向Test分组 ),

    首先是在config.php文件中开启二级域名配置

    'APP_SUB_DOMAIN_DEPLOY'=>true

    然后配置二级域名规则如下:

    'APP_SUB_DOMAIN_RULES'=>array('admin'=>array('admin'),//二级域名'data'=>array('data'),//二级域名'www'=>array('home'),//前台域名'html'=>array('html'),//静态页面'data'=>array('data'),//静态页面'*'=>array('te','DDD=*'),//二级泛域名'top.admin'=>array('admin/admin','var=1'),//三级域名'*.blog'=>array('blog','ABD=445&USER=*'),//三级泛域名),

    接下来进行host配置,在本机测试的时候需要自己配置如:127.0.0.1ddd.bbs.com127.0.0.1te.bbs.com127.0.0.1data.bbs.com127.0.0.1test.blog.bbs.com127.0.0.1tt.blog.bbs.com

    最后配置apache

    vhost配置我找到了一种最简便的方法如:<VirtualHost*:80>DocumentRoot"E:\wamp\www\bbbb"ServerNamebbs.comServerAlias*.bbs.com#开通泛解析</VirtualHost>

    项目配置请看项目里的config.php

    注:vhost配置中的ServerAlias是域名别名的意思,用*号表示匹配所有的子域名到本域名下

    后面的就交给thinkphp去解析了

    在官方手册去查了下,没有具体说明怎么支持二级域名的方法,最后找到一个解决方案(修改thinkphp的parsePathInfo函数让其支持二级域名)。

    # 修改的路径是:# ThinkPHP\Lib\Think\Util\Dispatcher.class.phpprivatestaticfunctionparsePathInfo(){$pathInfo=array();if(C('URL_PATHINFO_MODEL')==2){$paths=explode(C('URL_PATHINFO_DEPR'),trim($_SERVER['PATH_INFO'],'/'));<wbr>$APP_LEVEL_DOMAINS<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,0)"><strong>false</strong></span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span>$domain<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>array_shift<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>explode<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'.'</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span>$_SERVER<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'HTTP_HOST'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><wbr><span style="word-wrap:normal; word-break:normal; color:rgb(177,177,0)">if</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>in_array<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$domain<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span>C<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'APP_LEVEL_DOMAINS'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,0)"><strong>true</strong></span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">{</span>$APP_LEVEL_DOMAINS<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,0)"><strong>true</strong></span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span><wbr><span style="word-wrap:normal; word-break:normal; color:rgb(177,177,0)">if</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>C<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'APP_LEVEL_DOMAIN_DEPLOY_ON'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">&amp;&amp;</span>$APP_LEVEL_DOMAINS<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">{</span><span style="word-wrap:normal; word-break:normal; color:rgb(177,177,0)">if</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>isset<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,221)">0</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">&amp;&amp;</span>strtolower<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,221)">0</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">==</span>strtolower<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$domain<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">{</span>array_shift<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span>$pathInfo<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>C<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'VAR_MODULE'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>ucfirst<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>array_shift<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>explode<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'.'</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span>$_SERVER<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'HTTP_HOST'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span>$pathInfo<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>C<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'VAR_ACTION'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>array_shift<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span><span style="word-wrap:normal; word-break:normal; color:rgb(177,177,0)">else</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">{</span>$groupApp<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>C<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'APP_GROUP_LIST'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(177,177,0)">if</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$groupApp<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">{</span>$arr<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>array_map<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'strtolower'</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span>explode<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">','</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span>$groupApp<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span>$pathInfo<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>C<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'VAR_GROUP'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>in_array<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>strtolower<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,221)">0</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span>$arr<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">?</span>array_shift<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">:</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">''</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span>$pathInfo<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>C<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'VAR_MODULE'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>array_shift<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span>$pathInfo<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>C<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'VAR_ACTION'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>array_shift<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span><span style="word-wrap:normal; word-break:normal; color:rgb(177,177,0)">for</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$i<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,221)">0</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span>$cnt<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>count<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span>$i<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">&lt;</span>$cnt<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span>$i<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">++</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">{</span><span style="word-wrap:normal; word-break:normal; color:rgb(177,177,0)">if</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>isset<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>$i<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">+</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,221)">1</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">{</span>$pathInfo<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>$i<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(153,51,51)">string</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">++</span>$i<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span>elseif<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span>$i<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">==</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,221)">0</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">{</span>$pathInfo<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>$pathInfo<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>C<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'VAR_ACTION'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(153,51,51)">string</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span>$paths<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span>$i<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span><span style="word-wrap:normal; word-break:normal; color:rgb(177,177,0)">else</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">{</span>$res<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">=</span>preg_replace<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'@(\w+)'</span>.<span style="word-wrap:normal; word-break:normal; color:rgb(32,32,32)">C</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">(</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'URL_PATHINFO_DEPR'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span>.<span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'([^,\/]+)@e'</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'$pathInfo[<span style="word-wrap:normal; word-break:normal; color:rgb(0,0,153)"><strong>\'</strong></span>\<span style="word-wrap:normal; word-break:normal; color:rgb(0,102,153)"><strong>\1</strong></span><span style="word-wrap:normal; word-break:normal; color:rgb(0,0,153)"><strong>\'</strong></span>]="\<span style="word-wrap:normal; word-break:normal; color:rgb(0,102,153)"><strong>\2</strong></span>";'</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">,</span>$_SERVER<span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">[</span><span style="word-wrap:normal; word-break:normal; color:rgb(255,0,0)">'PATH_INFO'</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">]</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">)</span><span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span><span style="word-wrap:normal; word-break:normal; color:rgb(177,177,0)">return</span>$pathInfo<span style="word-wrap:normal; word-break:normal; color:rgb(51,153,51)">;</span><span style="word-wrap:normal; word-break:normal; color:rgb(0,153,0)">}</span></wbr></wbr></wbr>

    用上面这个函数替换后就能支持二级域名了,不过还有事情要做。在项目的配置文件(config.php)里面加上二级域名支持。

    returnarray(#'配置项'=>'配置值''DEBUG_MODE'=>true,'URL_MODEL'=>2,'APP_LEVEL_DOMAIN_DEPLOY_ON'=>true,#标识打开二级域名支持'APP_LEVEL_DOMAINS'=>array('sites','seo'),#例:如果是sites.ys250.com 那么将采用2级别域名的方式#'URL_HTML_SUFFIX'=>'.html',#'URL_ROUTER_ON' => true


    结果如:
    http://www.ys250.com/sites/ip (old)
    http://sites.ys250.com/ip (new)
    http://www.ys250.com/seo (old)
    http://seo.ys250.com (new)
    http://ips.ys250.com/ 让采用老的方式,因为ips没有开通二级支持支持,因此大家要开通自己的二级域名请设置APP_LEVEL_DOMAINS这个数组。




    暂时只支持二级域名的部署,更深层级的还在想使用GROUP分组形式好还是使用Router来进行检测。不喜欢废话,直接切入主题:

    修改ThinkPHP/Lib/Think/Util/Dispatcher.class.php

    找到parsePathInfo方法,修改为:

    1. privatestaticfunctionparsePathInfo()
    2. {
    3. $pathInfo=array();
    4. if(C('URL_PATHINFO_MODEL')==2){
    5. $paths=explode(C('URL_PATHINFO_DEPR'),trim($_SERVER['PATH_INFO'],'/'));
    6. if(C('APP_LEVEL_DOMAIN_DEPLOY_ON')){
    7. $pathInfo[C('VAR_MODULE')]=ucfirst(array_shift(explode('.',$_SERVER['HTTP_HOST'])));
    8. $pathInfo[C('VAR_ACTION')]=array_shift($paths);
    9. }else{
    10. $groupApp=C('APP_GROUP_LIST');
    11. if($groupApp){
    12. $arr=array_map('strtolower',explode(',',$groupApp));
    13. $pathInfo[C('VAR_GROUP')]=in_array(strtolower($paths[0]),$arr)?array_shift($paths):'';
    14. }
    15. $pathInfo[C('VAR_MODULE')]=array_shift($paths);
    16. $pathInfo[C('VAR_ACTION')]=array_shift($paths);
    17. }
    18. for($i=0,$cnt=count($paths);$i<$cnt;$i++){
    19. if(isset($paths[$i+1])){
    20. $pathInfo[$paths[$i]]=(string)$paths[++$i];
    21. }elseif($i==0){
    22. $pathInfo[$pathInfo[C('VAR_ACTION')]]=(string)$paths[$i];
    23. }
    24. }
    25. }else{
    26. $res=preg_replace('@(/w+)'.C('URL_PATHINFO_DEPR').'([^,//]+)@e','$pathInfo[/'//1/']="//2";',$_SERVER['PATH_INFO']);
    27. }
    28. return$pathInfo;
    29. }

    在App/Conf/config.php中添加配置:
    'APP_LEVEL_DOMAIN_DEPLOY_ON' => true
    即可开启二级域名部署

    访问:level.domain.com/index.html
    Module为LevelAction
    Action为index

    访问:payment.domain.com/gateway.html
    Module为PaymentAction
    Action为gateway



    首先是在config.php文件中开启二级域名配置

    'APP_SUB_DOMAIN_DEPLOY' => true

    <wbr></wbr>

    然后配置二级域名规则如下:

    <wbr><wbr><wbr>'APP_SUB_DOMAIN_RULES'<wbr>=&gt; array(<br><wbr><wbr><wbr><wbr>'admin'<wbr><wbr><wbr><wbr>=&gt; array('admin'), // 二级域名<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>'data'<wbr><wbr><wbr><wbr>=&gt; array('data'), // 二级域名<br><wbr><wbr><wbr><wbr>'www'<wbr><wbr><wbr><wbr><wbr><wbr>=&gt; array('home'),//前台域名<br><wbr><wbr><wbr><wbr>'html'<wbr><wbr>=&gt; array('html'),//静态页面<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>'data'<wbr><wbr>=&gt; array('data'),//静态页面<br><wbr><wbr><wbr><wbr>'*'<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>=&gt; array('te','DDD=*'), // 二级泛域名<br><wbr><wbr><wbr><wbr>'top.admin' =&gt; array('admin/admin','var=1'), // 三级域名<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>'*.blog'<wbr><wbr><wbr>=&gt; array('blog','ABD=445&amp;USER=*'), // 三级泛域名<br><wbr><wbr><wbr>),</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

    <wbr></wbr>

    接下来进行host配置,在本机测试的时候需要自己配置
    如:
    127.0.0.1 ddd.bbs.com
    127.0.0.1 te.bbs.com
    127.0.0.1 data.bbs.com
    127.0.0.1 test.blog.bbs.com
    127.0.0.1 tt.blog.bbs.com

    <wbr></wbr>

    最后配置apache

    vhost配置我找到了一种最简便的方法
    如:
    <VirtualHost *:80>
    <wbr><wbr><wbr>DocumentRoot "E:\wamp\www\bbbb"<br><wbr><wbr><wbr>ServerName bbs.com<br><wbr><wbr><wbr>ServerAlias *.bbs.com # 开通泛解析<br> &lt;/VirtualHost&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

    项目配置请看项目里的config.php

    <wbr></wbr>

    注:vhost配置中的ServerAlias是域名别名的意思,用*号表示匹配所有的子域名到本域名下

    后面的就交给thinkphp去解析了!





  


  
分享到:
评论

相关推荐

    ThinkPHP二级域名分发系统网站源码.zip

    本文将围绕"ThinkPHP二级域名分发系统"这一主题,深入探讨其核心概念、实现原理以及实际应用。 首先,我们需要理解二级域名的概念。二级域名是主域名下的一个子域名,如www.example.com中的"www"就是一级域名,而...

    ThinkPHP2.1.0 二级域名布署示例使用说明.

    ThinkPHP2.1.0 二级域名布署示例使用说明. ThinkPHP2.1.0 二级域名布署示例使用说明. ThinkPHP2.1.0 二级域名布署示例使用说明. ThinkPHP2.1.0 二级域名布署示例使用说明.

    CI框架(CodeIgniter)实现ThinkPHP一样的二级域名解析

    本例主要实现在CI框架中像ThinkPHP一样的二级域名解析方式 1. ci_url_rewirte.php 为实现的代码 可将其插入到system/URI.php 即框架URI类的相应地方 2. URI.php 为我实验版本(Version 1.0)的URI类,其他版本应用...

    二级域名分发系统重置版v1.7源码

    快乐二级域名分发系统重置版v1.7源码,简单快捷、功能强大的控制面板。主打稳定长久稳定客户,控制面板无任何广告,让我们伴您的网站成长 ! 更新日志: 1.更新fh系统(自带接口) 2.新增模板 3.修复原版美化模板ip...

    thinkphp3.1.3升级php7及nginx配置伪静态.zip

    **二、Nginx配置伪静态** Nginx作为高性能的HTTP和反向代理服务器,常用于部署Web应用。配置Nginx支持伪静态,可以使URL更友好,有助于SEO优化。对于ThinkPHP框架,配置过程如下: 1. **创建配置文件**:在Nginx的...

    宏昌家族二级分发域名系统 v1.0.zip

    宏昌家族二级分发域名系统是一个基于thinkphp3.2.2框架和DNSPod的API完成的一个程序,这个程序可以使你的顶级域名的二级域名分发给其他用户,顶级域名价值得到充分的利用 宏昌家族二级分发域名系统使用方法: 1.把...

    ThinkPHP开发文档

    `ThinkPHP 2.1 二级域名部署示例使用说明.pdf`介绍了如何在ThinkPHP 2.1中实现二级域名配置,这在多站点或子应用的项目中非常实用。通过二级域名部署,可以实现不同业务模块的独立管理和优化用户体验。 `ThinkPHP...

    快乐二级域名分发系统kldns 2.2.0.zip

    快乐二级域名分发系统kldns基于ThinkPHP5.0框架完成开发,支持的域名解析平台有dnspod、cloudxns、aliyun、dnscom、dnsla,多用户、多域名、多平台同时存在,界面简单、舒适,操作简单。快乐二级域名分发系统 2.2.0 ...

    快乐二级域名分发系统重置版v1.7源码.rar

    总的来说,《快乐二级域名分发系统重置版v1.7源码》是一个集成了域名管理、二级域名分发等功能的软件,通过合理的配置和使用,可以极大地提升多站点管理的效率。在部署和维护过程中,对PHP、服务器配置、数据库管理...

    php中cookie实现二级域名可访问操作的方法

    正确的设置方法可以让不同二级域名的网站访问主域名或者其他二级域名的cookie。通常的做法是,当设置cookie时,domain可以设置为顶级域名加上点号(如.***),或者直接使用顶级域名(如***)。在这个设置下,所有以*...

    PHP二级域名分发网站源码商业版全开源

    此源码能够帮助用户创建并管理多个二级域名,实现网站内容在不同二级域名间的分发,适用于需要为用户提供个性化或独立访问入口的场景,如博客平台、在线课程网站等。 2. **域名接口配置**:系统可能包含一个接口,...

    快乐二级域名分发系统重置版v1.7源码.zip

    快乐二级域名分发系统重置版v1.7源码,简单快捷、功能强大的控制面板。主打稳定长久稳定客户,控制面板无任何广告,让我们伴您的网站成长 ! 更新日志: 1.更新fh系统(自带接口) 2.新增模板 3.修复原版美化模板ip...

    快乐是福二级域名分发系统

    快乐是福二级域名分发系统是以php+MySQL进行开发的二级域名分发系统源码。 此系统有哪些特点 目前支持的域名解析平台有 1.dnspod 2.cloudxns 3.aliyun 多用户、多域名、多平台同时存在 界面简单、舒适,操作简单 ...

    ThinkPHP5完全开发手册

    - **域名路由**:解释了如何根据不同的域名配置不同的路由规则。 #### 六、控制器 - **控制器定义**:说明了如何定义控制器类。 - **控制器初始化**:讲述了控制器的初始化过程。 - **前置操作**:介绍了如何在...

    ecshop ectouch插件(基于ThinkPHP)

    ThinkPHP是一个快速、稳定且易于学习的轻量级PHP开发框架。它采用MVC(Model-View-Controller)架构模式,支持面向对象编程,具有良好的代码组织结构,使得开发者可以更专注于业务逻辑的实现,而非底层技术细节。...

    ThinkPHP 3.1.2 - PHP的开发框架MVC - 含Core,Extend,Example

    还可以支持对分组的二级域名部署支持。 模板引擎:系统内建了一款卓越的基于XML的编译型模板引擎,支持两种类型的 模板标签,融合了Smarty和JSP标签库的思想,并内置布局模板功能和标签库扩展 支持。通过驱动还可以...

    ThinkPHP5.0完全开发手册

    - **域名路由**:根据不同的域名定义不同的路由规则。 - **URL生成**:通过路由规则生成URL地址。 ##### 6. **控制器** - **控制器定义**:定义控制器类,处理用户的请求。 - **控制器初始化**:控制器执行前的...

    Thinkphp从漏洞挖掘到安全防御.pdf

    #### 二、ThinkPHP 3.2.3介绍与安装 ##### 1. ThinkPHP简介 ThinkPHP是一款遵循Apache2开源协议发布的PHP开发框架,以其简洁实用的设计理念著称,支持快速开发和简洁的代码编写方式。它包含许多原创功能和特性,为...

    【免费】ThinkPHP3.1.2经典笔记

    #### 二、ThinkPHP 核心文件结构 - **ThinkPHP.php**:框架的入口文件,负责初始化和启动整个框架。 - **Common**:框架公共文件夹,包含全局函数、常量定义等。 - **Conf**:框架配置文件夹,用于存放配置文件。 -...

    Thinkphp源码交易平台虚拟交易系统付费下载系统源码交易平台程序

    Thinkphp源码交易平台虚拟交易系统付费下载系统源码交易平台程序 安装说明: 用 phpmyadmin 导入数据库文件 修改数据库配置文件:\application\...测试环境: phpstudy php5.6 apache 开启伪静态 顶级域名或者二级域名

Global site tag (gtag.js) - Google Analytics