導航:首頁 > IDC知識 > thinkphp二級域名

thinkphp二級域名

發布時間:2020-10-26 06:38:00

1、THINKPHP的U函數不支持二級域名

/**
  * URL組裝 支持不同URL模式
  * @param string $url URL表達式,格式:'[分組/模塊/操作#錨點@域名]?參數1=值1&參數2=值2...'
  * @param string|array $vars 傳入的參數,支持數組和字元串
  * @param string $suffix 偽靜態後綴,默認為true表示獲取配置值
  * @param boolean $redirect 是否跳轉,如果設置為true則表示跳轉到該URL地址
  * @param boolean $domain 是否顯示域名
  * return string
  */

在U函數里有註解有,第五個參數:$domain設置為true。

在官網上也有一些大神,自己修改,你可以在官網搜索:關於開啟子域名後,U函數生成的問題

2、thinkphp如何綁定二級域名

先在根目錄創建一個手機目錄,名稱隨意,再創建一個手機模塊

手機目錄版裡面有個權新的index.php入口文件,內容如下

定義一個define綁定到手機模塊中,這樣就行了,至於頁面跳轉用js跳轉到:域名/mobile,或者直接綁定二級域名到根目錄下的mobile文件夾即可

3、thinkphp如何獲取二級域名前綴然後跳轉到其他的後綴

這個與框架無關,這只要獲取到訪問域名就可以判斷了

php中$_SERVER['SERVER_NAME']就可以訪問當前域名;

確定域名後用explode分離域名為數組獲取域名前綴就是為0的數組

4、thinkphp3.1 二級域名部署和各個二級域名的URL路由設置 ,配置文件怎麼寫?????

http://doc.thinkphp.cn/manual/sub_domain_deploy.html
ThinkPHP支持分組的二級域名部署,該功能可以使項目中的多個分組呈現為二級域名的形式,例如經過配置二級域名部署,可以把:
http://domain.com/index.php/Admin/或者http://domain.com/Admin/
變為 http://admin.domain.com/ 訪問方式。
先配置域名, 以 apache為例 , 配置如下:
#主域名
DocumentRoot D:\htdocs\www
ServerName domain.com
#子域名
DocumentRoot D:\htdocs\www
ServerName admin.domain.com
ServerAlias *.domain.com
然後配置host, 以windows為例編輯C:\WINDOWS\system32\drivers\etc\hosts 文件,增加下面兩行:
127.0.0.1 domain.com
127.0.0.1 admin.domain.com
接下來修改程序的配置文件config.php如下
'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分組
),

3

5、Thinkphp 框架 部署二級域名怎麼樣綁定到一個具體的方法上?

你配置那個干毛線。。直接綁定二級域名到你的訪問目錄即可。。。

6、請問如果一個網站要用二級域名做3個分站的形式,是需要做三個網站嗎?

按常理來說,是應該這樣的,但是,域名綁定是支持,文件夾綁定的,也就是每個二級域名可以指向文件夾,只是你這個文件夾內訪問頁為你設置的的WEB首頁就能正常訪問到!所以我認為是篩選,就像thinkphp是可以直接用二級域名綁定分組一樣,如果所用框架不允許,也可以用URL偽類來重定向,應該能完成類似與58同城一樣的功能!

7、thinkphp 二級域名訪問無效 求助

ThinkPHP支持分組的二級域名部署,該功能可以使項目中的多個分組呈現為二級域名的形式,例如經過配置二級域名部署,可以把:
http://domain.com/index.php/Admin/或者http://domain.com/Admin/
變為 http://admin.domain.com/ 訪問方式。
先配置域名, 以 apache為例 , 配置如下:
#主域名
DocumentRoot D:\htdocs\www
ServerName domain.com
#子域名
DocumentRoot D:\htdocs\www
ServerName admin.domain.com
ServerAlias *.domain.com
然後配置host, 以windows為例編輯C:\WINDOWS\system32\drivers\etc\hosts 文件,增加下面兩行:
127.0.0.1 domain.com
127.0.0.1 admin.domain.com
接下來修改程序的配置文件config.php如下
'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分組
),

8、500分懸賞 thinkphp二級分類 包括資料庫設計及代碼

在官方手冊去查了下,沒有具體說明怎麼支持二級域名的方法,最後找到一個解決方案(修改thinkphp的parsePathInfo函數讓其支持二級域名)。
# 修改的路徑是: # ThinkPHP\Lib\Think\Util\Dispatcher.class.php private static function parsePathInfo() { $pathInfo = array(); if(C('URL_PATHINFO_MODEL')==2){ $paths = explode(C('URL_PATHINFO_DEPR'),trim($_SERVER['PATH_INFO'],'/')); $APP_LEVEL_DOMAINS = false; $domain = array_shift(explode('.',$_SERVER['HTTP_HOST'])); if(in_array($domain, C('APP_LEVEL_DOMAINS'), true)){ $APP_LEVEL_DOMAINS = true; } if(C('APP_LEVEL_DOMAIN_DEPLOY_ON') && $APP_LEVEL_DOMAINS) { if(isset($paths[0]) && strtolower($paths[0]) == strtolower($domain)){ array_shift ($paths); } $pathInfo[C('VAR_MODULE')] = ucfirst(array_shift(explode('.',$_SERVER['HTTP_HOST']))); $pathInfo[C('VAR_ACTION')] = array_shift($paths); } else { $groupApp = C('APP_GROUP_LIST'); if ($groupApp) { $arr = array_map('strtolower',explode(',',$groupApp)); $pathInfo[C('VAR_GROUP')] = in_array(strtolower($paths[0]),$arr) ? array_shift($paths) : ''; } $pathInfo[C('VAR_MODULE')] = array_shift($paths); $pathInfo[C('VAR_ACTION')] = array_shift($paths); } for($i = 0, $cnt = count($paths); $i < $cnt; $i++){ if(isset($paths[$i+1])) { $pathInfo[$paths[$i]] = (string)$paths[++$i]; }elseif($i==0) { $pathInfo[$pathInfo[C('VAR_ACTION')]] = (string)$paths[$i]; } } }else { $res = preg_replace('@(\w+)'.C('URL_PATHINFO_DEPR').'([^,\/]+)@e', '$pathInfo[\'\\1\']="\\2";', $_SERVER['PATH_INFO']); } return $pathInfo; } 用上面這個函數替換後就能支持二級域名了,不過還有事情要做。在項目的配置文件(config.php)裡面加上二級域名支持。
return array( #'配置項'=>'配置值' '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這個數組。

9、thinkphp 如何子域名session跨域

給你一個方案
在A站登陸成功後,在提示頁面輸出一個<script src="B站的同步登陸api"></script>

其中 B站的同步登陸api 地址帶上用戶的ID及登陸授權參數. 然後這個API中通過用戶的ID及授權參數判斷是否合法.合法則在B站添加session 這樣就實現了同步登陸.

然後同步退出,方法也是一樣的

10、thinkphp3.1.3 開啟子域名部署後,如何對每個分組進行獨立路由?

如果只啟用m子域名,admin/xxx/xxx是可以正常用的。
如果有些地址不能訪問,添加路由規則即可
'URL_ROUTER_ON' => true,
'URL_ROUTE_RULES' => array();

與thinkphp二級域名相關的知識