'APP_SUB_DOMAIN_DEPLOY' => false, // 是否開啟子域名部署
thinkphp開啟域名部署/子域名部署/泛域名部署/IP訪問部署
ThinkPHP支持模塊(甚至可以包含控制器)的完整域名、子域名和IP部署功能,讓你的模塊變得更加靈活,模塊綁定到域名或者IP后,URL地址中的模塊名稱就可以省略了,所以還可以起到簡化URL的作用。
無論是子域名還是IP部署,首先要在應用配置文件中開啟APP_SUB_DOMAIN_DEPLOY,這是前提,然后配置域名部署規則APP_SUB_DOMAIN_RULES。
'APP_SUB_DOMAIN_DEPLOY' => 1, // 開啟子域名或者IP配置
'APP_SUB_DOMAIN_RULES' => array(
/* 域名部署配置
*格式1: '子域名或泛域名或IP'=> '模塊名[/控制器名]';
*格式2: '子域名或泛域名或IP'=> array('模塊名[/控制器名]','var1=a&var2=b&var3=*');
*/
)
域名部署的定義格式2和1的區別在於格式2可以隱式傳入額外的參數。 域名和IP的解析涉及到DNS解析以及Apache等服務器的配置,這塊不再詳細描述,請參考相關百度資料。
域名或者IP部署到模塊並不需要設置模塊訪問列表。
完整域名部署
可以在域名規則中直接定義完整的域名,例如:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 開啟子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin.domain1.com' => 'Admin', // admin.domain1.com域名指向Admin模塊
'test.domain2.com' => 'Test', // test.domain2.com域名指向Test模塊
),
在域名部署之前的訪問地址: http://www.domain.com/Admin/Index/index 和 http://www.domain.com/Test/Index/index
域名部署后的訪問地址變成: http://admin.domain1.com/Index/index 和 http://test.domain2.com/Index/index
子域名部署
子域名部署包括任意級子域名的支持,在你的應用配置文件中增加如下配置參數:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 開啟子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin' => 'Admin', // admin子域名指向Admin模塊
'test' => 'Test', // test子域名指向Test模塊
),
部署之前的訪問地址:http://www.domain.com/Admin/Index/index
部署后的訪問地址變成: http://admin.domain.com/Index/index
如果你的部署域名后綴是二級后綴,例如 com.cn 、net.cn 或者 org.cn 之類的話,為了讓系統更好的識別你的子域名,需要配置APP_DOMAIN_SUFFIX如下:
'APP_DOMAIN_SUFFIX'=>'com.cn'
APP_DOMAIN_SUFFIX參數不支持設置多個后綴,如果你是一級域名后綴的話則該參數可以無需任何設置。
傳入參數
子域名部署的時候,可以傳入隱式的參數,例如:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 開啟子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin' => array('Admin','var1=1&var2=2'), // admin子域名指向Admin模塊
),
訪問 http://admin.domain.com/Index/index 的同時會傳入 $_GET['var1'] = 1 和 $_GET['var2'] = 2 兩個參數。
控制器綁定
子域名部署還可以支持綁定某個控制器,例如:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 開啟子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'test.admin' => 'Admin/Test', // test.admin子域名指向Admin模塊的Test控制器
),
部署之前的訪問地址: http://www.domain.com/Admin/Test/index
部署后的訪問地址: http://test.admin.domain.com/index
泛域名部署
如果要部署某個模塊到泛域名支持,可以使用:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 開啟子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin' => 'Admin', // admin域名指向Admin模塊
'*' => array('Test','var1=1&var2=*'), // 二級泛域名指向Test模塊
'*.user' => array('User','status=1&name=*'), // 三級泛域名指向User模塊
),
配置后,我們可以訪問:
http://hello.domain.com/Index/index
訪問Test模塊 並隱式傳入$_GET['var1'] = 1 和 $_GET['var2'] = 'hello' 兩個參數。
訪問如下地址:
http://think.user.domain.com/Index/index
訪問User模塊,並隱式傳入 $_GET['status'] = 1 和 $_GET['name'] = 'think' 兩個參數。
在配置傳入參數的時候,如果需要使用當前的泛域名作為參數,可以直接設置為"*"即可。
目前只支持二級域名和三級域名的泛域名部署。
IP訪問部署
可以為某些模塊配置IP訪問規則,例如:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 開啟子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'22.56.78.9' => 'Admin', // 22.56.78.9指向Admin模塊
),
轉
文章來源:劉俊濤的博客
歡迎關注,有問題一起學習歡迎留言、評論
