国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 php手冊 淺談ThinkPHP3.2的子域名部署和路由優(yōu)化(一)

淺談ThinkPHP3.2的子域名部署和路由優(yōu)化(一)

Dec 05, 2016 pm 01:26 PM

前言:建立一個網(wǎng)站系統(tǒng),往往包含多個子網(wǎng)站,例如PC官網(wǎng),移動端官網(wǎng),后臺管理,數(shù)據(jù)源自一個相同的數(shù)據(jù)庫,整個架構(gòu)上,從ThinkPHP來看,可以大體理解為Model(M)是一樣的,Controller(C)包含共用API部分和不共用部分,View則是完全不共用的,這里在整個初始架構(gòu)的時候,我們可以主要從以下幾個方面去考慮:

配置共用的數(shù)據(jù)庫、擴展Application里面的模塊、自定義視圖文件夾、子域名部署路由簡化....

具體操作如下:

1、準(zhǔn)備ThinkPHP環(huán)境、數(shù)據(jù)庫

??? a、下載官網(wǎng)ThinkPHP3.2完整版源碼,解壓命名為testWeb放置到www目錄下,訪問http://192.168.1.122/testWeb/,可以看到:

???? 說明部署沒問題的。

???? b、準(zhǔn)備一個測試的數(shù)據(jù)庫books,新建book表(id,title,price),準(zhǔn)備好測試數(shù)據(jù);

????

???? c、配置數(shù)據(jù)庫,參考ThinkPHP配置加載規(guī)則,可以采用慣例配置(ThinkPHP/Conf/convention.php),結(jié)合應(yīng)用配置(Application/Common/Conf/config.php)、模塊配置(Application/當(dāng)前模塊名/Conf/config.php),

???????? 這里我采用的是數(shù)據(jù)庫配置在應(yīng)用配置上:

<span style="color: #008080"> 1</span>     <span style="color: #008000">//</span><span style="color: #008000">數(shù)據(jù)庫配置信息</span>
<span style="color: #008080"> 2</span>     'DB_TYPE'   => 'mysql', <span style="color: #008000">//</span><span style="color: #008000"> 數(shù)據(jù)庫類型</span>
<span style="color: #008080"> 3</span>     'DB_HOST'   => 'localhost', <span style="color: #008000">//</span><span style="color: #008000"> 服務(wù)器地址localhost</span>
<span style="color: #008080"> 4</span>     'DB_NAME'   => 'books', <span style="color: #008000">//</span><span style="color: #008000"> 數(shù)據(jù)庫名</span>
<span style="color: #008080"> 5</span>     'DB_USER'   => 'root', <span style="color: #008000">//</span><span style="color: #008000"> 用戶名</span>
<span style="color: #008080"> 6</span>     'DB_PWD'    => '', <span style="color: #008000">//</span><span style="color: #008000"> 密碼</span>
<span style="color: #008080"> 7</span>     'DB_PORT'   => 3306, <span style="color: #008000">//</span><span style="color: #008000"> 端口</span>
<span style="color: #008080"> 8</span>     'DB_PREFIX' => '', <span style="color: #008000">//</span><span style="color: #008000"> 數(shù)據(jù)庫表前綴</span>
<span style="color: #008080"> 9</span>     'DB_CHARSET'=> 'utf8', <span style="color: #008000">//</span><span style="color: #008000"> 字符集</span>
<span style="color: #008080">10</span>     'DB_DEBUG'  =>  <span style="color: #0000ff">TRUE</span>, <span style="color: #008000">//</span><span style="color: #008000"> 數(shù)據(jù)庫調(diào)試模式 開啟后可以記錄SQL日志 3.2.3新增<br></span>

??????? 接著,在默認(rèn)Index控制器里面,添加一個操作(action):

<span style="color: #008080">1</span>     <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span> get_book(<span style="color: #800080">$id</span><span style="color: #000000">){
</span><span style="color: #008080">2</span>         <span style="color: #800080">$param</span>['id'] = I('get.id'<span style="color: #000000">);
</span><span style="color: #008080">3</span>         <span style="color: #800080">$model</span> = M('book')->where(<span style="color: #800080">$param</span>)-><span style="color: #000000">find();
</span><span style="color: #008080">4</span>         <span style="color: #800080">$this</span>->ajaxReturn(<span style="color: #800080">$model</span><span style="color: #000000">);
</span><span style="color: #008080">5</span>     }

    訪問:http://192.168.1.122/testWeb/index.php/Home/Index/get_book?id=1,就可以去到j(luò)son數(shù)據(jù),說明到此為止數(shù)據(jù)庫連接和訪問時正常的:

??????????

2、擴展Application應(yīng)用目錄里面的模塊

???? a、快速拷貝當(dāng)前的Home模塊,重命名為H5模塊并修改相應(yīng)控制器里面的名空間為:namespace H5\Controller,

???? 訪問:http://192.168.1.122/testWeb/index.php/H5/Index/get_book?id=1,這時成功返回數(shù)據(jù),說明當(dāng)前H5模塊是可以的;同理我們可以復(fù)

???? 制一個Admin模塊。

3、自定義視圖文件夾

?????a、視圖概念:ThinkPHP是基于MVC結(jié)構(gòu)設(shè)計的一種PHP框架,如果是簡單的數(shù)據(jù)庫操作,往往可以省略模塊里面的Model,僅僅使用Controller就可以完成CURD操作,而視圖也是其中一個很重要的功能。ThinkPHP中的視圖主要指模板文件和模板引擎:模板文件可以簡單理解為搭建積木玩具中的基本“小原件”,這“小原件”可能是不同形狀,每種形狀的“小原件”可能在搭建的過程中使用了一個或者多個;模板引擎,則是搭建積木玩具中的“凹凸”卡扣,形成一種規(guī)則將“小原件”組合起來。

????? b、視圖使用:新增Home模塊-Index控制器-book操作來獲取所有書籍,并在Home模塊的View文件夾下,新建Index文件夾-新建book.html

<span style="color: #008080">1</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> book(){
</span><span style="color: #008080">2</span>     <span style="color: #800080">$models</span> = M('book')-><span style="color: #000000">select();
</span><span style="color: #008080">3</span>     <span style="color: #800080">$this</span>->assign('books',<span style="color: #800080">$models</span><span style="color: #000000">);
</span><span style="color: #008080">4</span>     <span style="color: #800080">$this</span>-><span style="color: #000000">display();
</span><span style="color: #008080">5</span> }

?????? 模板文件:

<span style="color: #008080">1</span> <span style="color: #0000ff"><span style="color: #800000">body</span><span style="color: #0000ff">></span>
<span style="color: #008080">2</span>     <span style="color: #0000ff"><span style="color: #800000">volist </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="books"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="vo"</span><span style="color: #0000ff">></span>
<span style="color: #008080">3</span>         <span style="color: #0000ff"><span style="color: #800000">p</span><span style="color: #0000ff">></span>序號:{$vo.id}<span style="color: #0000ff"></span><span style="color: #800000">p</span><span style="color: #0000ff">></span>
<span style="color: #008080">4</span>         <span style="color: #0000ff"><span style="color: #800000">p</span><span style="color: #0000ff">></span>書名:{$vo.title}<span style="color: #0000ff"></span><span style="color: #800000">p</span><span style="color: #0000ff">></span>
<span style="color: #008080">5</span>         <span style="color: #0000ff"><span style="color: #800000">p </span><span style="color: #ff0000">style</span><span style="color: #0000ff">="color: #FF0000"</span><span style="color: #0000ff">></span>價格:{$vo.price}<span style="color: #0000ff"></span><span style="color: #800000">p</span><span style="color: #0000ff">></span>
<span style="color: #008080">6</span>     <span style="color: #0000ff"></span><span style="color: #800000">volist</span><span style="color: #0000ff">></span>
<span style="color: #008080">7</span> <span style="color: #0000ff"></span><span style="color: #800000">body</span><span style="color: #0000ff">></span></span></span></span></span></span>

????? c、 訪問:http://192.168.1.122/testWeb/index.php/Home/Index/book,此時可以看到頁面:

?????? 此時,說明這個視圖使用是正確的,但是同時也有一些不好的地方,如果模板文件多起來的時候,就不利于模板修改編輯(目錄層次太深了),可以在模塊配置中,定義當(dāng)前模塊默認(rèn)的視圖目錄(Application/Home/Conf/config.php):

<span class="hljs-string"><span class="hljs-string"> <span class="cnblogs_code"><span style="color: #008080">define</span>('TMPL_PATH','./Public/PC/'); </span><br></span></span>

類似定義H5、admin模塊的視圖目錄,最終得到的目錄組織,到此,就可以大概有幾個不同的子網(wǎng)站的初步架構(gòu)了。而對于網(wǎng)站的分類:二級菜單、三級菜單就可以分別對應(yīng)控制器(Controller)和操作(action),根據(jù)視圖模板構(gòu)造動態(tài)的頁面:

4、子域名部署,關(guān)于子域名的解析可以參考我之前的文章網(wǎng)站部署一級域名、二級域名、子域名

a、主要修改一些相關(guān)配置:

<span style="color: #008080"> 1</span> <span style="color: #0000ff"><</span><span style="color: #800000">VirtualHost </span><span style="color: #ff0000">*:80</span><span style="color: #0000ff">></span>
<span style="color: #008080"> 2</span> <span style="color: #000000">    DocumentRoot "E:/wamp/www/testWeb/"
</span><span style="color: #008080"> 3</span> <span style="color: #000000">    ServerName  chqtest.com
</span><span style="color: #008080"> 4</span> <span style="color: #000000">    ServerAlias m.chqtest.com
</span><span style="color: #008080"> 5</span>     <span style="color: #0000ff"><</span><span style="color: #800000">Directory </span><span style="color: #ff0000">"E:/wamp/www/testWeb/"</span><span style="color: #0000ff">></span>
<span style="color: #008080"> 6</span> <span style="color: #000000">    Allow from all      
</span><span style="color: #008080"> 7</span>     <span style="color: #0000ff"></</span><span style="color: #800000">Directory</span><span style="color: #0000ff">></span>
<span style="color: #008080"> 8</span>     <span style="color: #0000ff"><</span><span style="color: #800000">IfModule </span><span style="color: #ff0000">dir_module</span><span style="color: #0000ff">></span>
<span style="color: #008080"> 9</span> <span style="color: #000000">       DirectoryIndex  mobile.php index.html index.htm default.php default.htm default.html
</span><span style="color: #008080">10</span>     <span style="color: #0000ff"></</span><span style="color: #800000">IfModule</span><span style="color: #0000ff">></span>
<span style="color: #008080">11</span> <span style="color: #0000ff"></</span><span style="color: #800000">VirtualHost</span><span style="color: #0000ff">></span>
<span style="color: #008080">12</span> 
<span style="color: #008080">13</span> <span style="color: #0000ff"><</span><span style="color: #800000">VirtualHost </span><span style="color: #ff0000">*:80</span><span style="color: #0000ff">></span>
<span style="color: #008080">14</span> <span style="color: #000000">    DocumentRoot "E:/wamp/www/testWeb/"
</span><span style="color: #008080">15</span> <span style="color: #000000">    ServerName  chqtest.com
</span><span style="color: #008080">16</span> <span style="color: #000000">    ServerAlias www.chqtest.com
</span><span style="color: #008080">17</span>     <span style="color: #0000ff"><</span><span style="color: #800000">Directory </span><span style="color: #ff0000">"E:/wamp/www/testWeb/"</span><span style="color: #0000ff">></span>
<span style="color: #008080">18</span> <span style="color: #000000">    Allow from all      
</span><span style="color: #008080">19</span>     <span style="color: #0000ff"></</span><span style="color: #800000">Directory</span><span style="color: #0000ff">></span>
<span style="color: #008080">20</span>     <span style="color: #0000ff"><</span><span style="color: #800000">IfModule </span><span style="color: #ff0000">dir_module</span><span style="color: #0000ff">></span>
<span style="color: #008080">21</span> <span style="color: #000000">       DirectoryIndex  index.php index.html index.htm default.php default.htm default.html
</span><span style="color: #008080">22</span>     <span style="color: #0000ff"></</span><span style="color: #800000">IfModule</span><span style="color: #0000ff">></span>
<span style="color: #008080">23</span> <span style="color: #0000ff"></</span><span style="color: #800000">VirtualHost</span><span style="color: #0000ff">></span>
<span style="color: #008080">24</span> 
<span style="color: #008080">25</span> <span style="color: #0000ff"><</span><span style="color: #800000">VirtualHost </span><span style="color: #ff0000">*:80</span><span style="color: #0000ff">></span>
<span style="color: #008080">26</span> <span style="color: #000000">    DocumentRoot "E:/wamp/www/testWeb/"
</span><span style="color: #008080">27</span> <span style="color: #000000">    ServerName  chqtest.com
</span><span style="color: #008080">28</span> <span style="color: #000000">    ServerAlias admin.chqtest.com
</span><span style="color: #008080">29</span>     <span style="color: #0000ff"><</span><span style="color: #800000">Directory </span><span style="color: #ff0000">"E:/wamp/www/testWeb/"</span><span style="color: #0000ff">></span>
<span style="color: #008080">30</span> <span style="color: #000000">    Allow from all      
</span><span style="color: #008080">31</span>     <span style="color: #0000ff"></</span><span style="color: #800000">Directory</span><span style="color: #0000ff">></span>
<span style="color: #008080">32</span>     <span style="color: #0000ff"><</span><span style="color: #800000">IfModule </span><span style="color: #ff0000">dir_module</span><span style="color: #0000ff">></span>
<span style="color: #008080">33</span> <span style="color: #000000">       DirectoryIndex  index.php index.html index.htm default.php default.htm default.html
</span><span style="color: #008080">34</span>     <span style="color: #0000ff"></</span><span style="color: #800000">IfModule</span><span style="color: #0000ff">></span>
<span style="color: #008080">35</span> <span style="color: #0000ff"></</span><span style="color: #800000">VirtualHost</span><span style="color: #0000ff">></span>

此時,也就是說,有不同子域名(二級網(wǎng)站別名)www.chqtest.com m.chqtest.com admin.chqtest.com都可以直接訪問到www/testWeb目錄下,如http://www.chqtest.com/index.php/Home/Index/book,

http://m.chqtest.com/index.php/Home/Index/book都是一樣的,只是訪問到Home模塊下的書籍頁面(改Home為H5也都指向手機端頁面);

b、那么如果要根據(jù)不同的子域名,直接綁定到不同的模塊怎么辦?參考ThinkPHP的域名部署,也就是在慣用配置下補充一些信息:

<span style="color: #008080"> 1</span>     'APP_SUB_DOMAIN_DEPLOY' =>  <span style="color: #0000ff">true</span>,   <span style="color: #008000">//</span><span style="color: #008000"> 是否開啟子域名部署
</span><span style="color: #008080"> 2</span> <span style="color: #008000">    //完整域名部署</span>
<span style="color: #008080"> 3</span>     'APP_SUB_DOMAIN_RULES'    =>    <span style="color: #0000ff">array</span>( <span style="color: #008000">//</span><span style="color: #008000"> 子域名部署規(guī)則</span>
<span style="color: #008080"> 4</span>         'www.chqtest.com'  => 'Home',   <span style="color: #008000">//</span><span style="color: #008000"> www.chqtest.com域名指向Home模塊</span>
<span style="color: #008080"> 5</span>         'm.chqtest.com'   => 'H5',
<span style="color: #008080"> 6</span>         'admin.chqtest.com' => 'Admin',
<span style="color: #008080"> 7</span>     ),
<span style="color: #008080"> 8</span>     'APP_DOMAIN_SUFFIX'     =>  '', <span style="color: #008000">//</span><span style="color: #008000"> 域名后綴 如果是com.cn net.cn 之類的后綴必須設(shè)置    </span>
<span style="color: #008080"> 9</span>     'ACTION_SUFFIX'         =>  '', <span style="color: #008000">//</span><span style="color: #008000"> 操作方法后綴</span>
<span style="color: #008080">10</span>     'MULTI_MODULE'          =>  <span style="color: #0000ff">true</span>, <span style="color: #008000">//</span><span style="color: #008000"> 是否允許多模塊 如果為false 則必須設(shè)置 DEFAULT_MODULE</span>
<span style="color: #008080">11</span>     'MODULE_DENY_LIST'      =>  <span style="color: #0000ff">array</span>('Common','Runtime'),
<span style="color: #008080">12</span>     'MODULE_ALLOW_LIST'    =>    <span style="color: #0000ff">array</span>('Home','H5','Admin'), <span style="color: #008000">//</span><span style="color: #008000"> 允許訪問的模塊列表</span>

???????????? 再次訪問http://www.chqtest.com/index.php/Home/Index/book,http://m.chqtest.com/index.php/Home/Index/book,會發(fā)現(xiàn)有以下錯誤:

??? 這是因為綁定子域名部署之后,index.php入口文件定位到Application應(yīng)用目錄之前,就已經(jīng)根據(jù)不同的子域名,直接進入相應(yīng)的目錄里面了,這時Home就會被判斷要查找的控制器,顯然當(dāng)前控制器只有Index,所以,重新訪問:http://www.chqtest.com/index.php/Index/book,http://m.chqtest.com/index.php/Index/book,http://admin.chqtest.com/index.php/Index/book,是不是就都分別訪問到相應(yīng)模塊下的操作并返回視圖呢:

??????????

???? 這時,基本就可以搭建了一個大體的網(wǎng)站架構(gòu)就進一步完善了些,從http://192.168.1.122/testWeb/index.php/H5/Index/book訪問手機端書籍頁面,到http://m.chqtest.com/index.php/Index/book是不是可以省略了一級資源目錄和模塊名了呢,

???? 整個結(jié)構(gòu)也清晰了很多。下一篇,將繼續(xù)說說ThinkPHP關(guān)于路由優(yōu)化,PC、H5網(wǎng)站相互切換的技巧,有興趣的可以留意下,關(guān)于這次例子可以參考Demo

?

????

?

?

?

?

?

????????

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276