`
beyondhjjyt
  • 浏览: 37636 次
  • 性别: 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去解析了!





  


  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics