摘要:二級(jí)域名管理問(wèn)題我們推薦使用來(lái)生成鏈接,而不是人為寫(xiě)這樣,這樣對(duì)以后適配規(guī)則的更改有莫大的好處。
這似乎是個(gè)老生常談的問(wèn)題,那就再談一次吧,本文我們要完成兩件事件。
完成的任務(wù)
將模塊二級(jí)域名化
讓urlManager支持二級(jí)域名
將模塊二級(jí)域名化我們有這樣的兩個(gè)模塊,分別是 admin 和 wechat ,接下來(lái)想做一件事情
http://wechat.abc.com ===> wechat http://admin.abc.com ===> admin
廢話少說(shuō),開(kāi)始干貨~?
解析一個(gè)二級(jí)域名我們以 admin 為例,首先要解析 http://admin.abc.com ,在各種云的域名控制面板。
配置 config/web.php修改 urlManager 配置項(xiàng)
"urlManager" => [ "enablePrettyUrl" => true, "showScriptName" => false, "rules" => [ "http://admin.abc.com"=>"admin",// 方法一 直接指定 "http://<_m:(sys|admin|photo)>.abc.com"=>"<_m>" //方法二 多個(gè)二級(jí)域名同時(shí)適配也可以 ], ],完了么?
恩,完了,多模塊的二級(jí)域名部署就可以了,阿北知道你一定認(rèn)為此文為標(biāo)題黨,干嘛寫(xiě)這么有深度的標(biāo)題那????
其實(shí)二級(jí)域名的部署并不復(fù)雜,復(fù)雜在部署后所引發(fā)的一些列問(wèn)題,這種問(wèn)題可能是需求上的,可能是技術(shù)上的。
@@nai8@@
接下來(lái)就舉一個(gè)需求上的例子。
二級(jí)域名管理問(wèn)題我們推薦使用urlManager來(lái)生成鏈接,而不是人為寫(xiě) http://xxx.xxx.xxx/xxx.html 這樣,這樣對(duì)以后適配url規(guī)則的更改有莫大的好處。
但是當(dāng)二級(jí)域名后,我在 admin 模塊下想 生成一個(gè) wechat 模塊的鏈接就變的困難了,相對(duì)url肯定是不行了,但是如果我們用yii提供的 createAbsoluteUrl ,它的domain部分也是使用當(dāng)前域名,無(wú)法指定,因此也行不通,看來(lái)要改造一下。
原則:不改動(dòng)yii源代碼。
新建一個(gè) urlManager 類在不改變urlManager任何方法的前提下,我們需要擴(kuò)展一下它,所以第一步我們?cè)?appcomponents 下建立一個(gè)叫做 urlManager 的類,這個(gè)類繼承于 yii 的 urlManager 類,并且增加一個(gè)叫做 domainName 的屬性。
namespace appcomponents; use Yii; use yiihelpersUrl; use yiiaseInvalidConfigException; class UrlManager extends yiiwebUrlManager { public $domainName; protected $_hostInfo; public function getProperDomain(){ if ( ! isset($this->domainName) || empty($this->domainName) ) { throw new InvalidConfigException("Request requires a domain name to be configured!"); } return $this->domainName; } public function getHostInfo(){ if ($this->_hostInfo === null) { $secure = Yii::$app->getRequest()->getIsSecureConnection(); $http = $secure ? "https" : "http"; if (isset($_SERVER["HTTP_HOST"])) { $this->_hostInfo = $http . "://" . $this->getProperDomain(); } elseif (isset($_SERVER["SERVER_NAME"])) { $this->_hostInfo = $http . "://" . $this->getProperDomain(); $port = $secure ? $this->getSecurePort() : $this->getPort(); if (($port !== 80 && !$secure) || ($port !== 443 && $secure)) { $this->_hostInfo .= ":" . $port; } } } return $this->_hostInfo; } }
思路其實(shí)很簡(jiǎn)單,就是我們重寫(xiě)了 getHostInfo 函數(shù),將指定的 domainName 加上去。
配置config/web.php我們?cè)趙eb.php的 components 中自定義一個(gè)叫做 adminUrlManager的項(xiàng)。
... "urlManager" => [ "enablePrettyUrl" => true, "showScriptName" => false, "rules" => [ "http://<_m:(sys|admin|photo)>.zhihu-local.com"=>"<_m>", ], ], "adminUrlManager"=>[ "class" => "appcomponentsUrlManager", "domainName" => "admin.abc.com", ] ...
好了,此刻我們?cè)谌魏我粋€(gè)模塊或app下執(zhí)行下面代碼
echo Yii::$app->adminUrlManager->createAbsoluteUrl(["default/index"]);
都會(huì)輸出我們想要的絕對(duì)地址。
http://admin.abc.com/index.ph...
目的達(dá)到了吧。
再說(shuō)幾句今天是端午小長(zhǎng)假第二天,因陪家人來(lái)龍?zhí)洞髰{谷玩,晚上旅店的網(wǎng)絡(luò)不好,剛剛編輯好發(fā)出來(lái),實(shí)在不好意思,在這里我和北嫂也一起祝大家節(jié)日快樂(lè),多陪陪家人,他們才是最重要的。
歡迎來(lái)到我的小站 更多yii2視頻 http://nai8.me
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/23053.html
摘要:例如,淘寶登錄的,登錄成功的。所以思考如何實(shí)現(xiàn)這種跨域的登錄就顯得尤為重要了。需求分析進(jìn)入登錄頁(yè)面的地址登錄成功后跳轉(zhuǎn)的地址下面我主要是以框架為例解說(shuō)一下我是怎么實(shí)現(xiàn)這種跨越的登錄的。 序言 近年來(lái)網(wǎng)絡(luò)發(fā)展很快,參與網(wǎng)購(gòu)的人越來(lái)越多,但是大家在網(wǎng)購(gòu)的時(shí)候不知到有沒(méi)有注意到無(wú)論是淘寶還是京東,他們用的都是二級(jí)域名,登錄一個(gè)URL,登錄成功后又是一個(gè)URL,作為一個(gè)開(kāi)發(fā)者反正我是注意到了。...
摘要:例如,淘寶登錄的,登錄成功的。所以思考如何實(shí)現(xiàn)這種跨域的登錄就顯得尤為重要了。需求分析進(jìn)入登錄頁(yè)面的地址登錄成功后跳轉(zhuǎn)的地址下面我主要是以框架為例解說(shuō)一下我是怎么實(shí)現(xiàn)這種跨越的登錄的。 序言 近年來(lái)網(wǎng)絡(luò)發(fā)展很快,參與網(wǎng)購(gòu)的人越來(lái)越多,但是大家在網(wǎng)購(gòu)的時(shí)候不知到有沒(méi)有注意到無(wú)論是淘寶還是京東,他們用的都是二級(jí)域名,登錄一個(gè)URL,登錄成功后又是一個(gè)URL,作為一個(gè)開(kāi)發(fā)者反正我是注意到了。...
摘要:之版本控制之前我寫(xiě)過(guò)兩篇關(guān)于如何搭建,以及認(rèn)證等處理,但是沒(méi)有涉及到版本管理,今天就來(lái)談?wù)劙姹竟芾砣绾螌?shí)現(xiàn)。如果你還沒(méi)有安裝,你可以按照這里的說(shuō)明進(jìn)行安裝。 Yii2.0 RESTful API 之版本控制 之前我寫(xiě)過(guò)兩篇關(guān)于 Yii2.0 RESTful API 如何搭建,以及 認(rèn)證 等處理,但是沒(méi)有涉及到版本管理,今天就來(lái)談?wù)劙姹竟芾砣绾螌?shí)現(xiàn)。 索性就從頭開(kāi)始一步一步搭建吧,但是關(guān)...
摘要:近期,又迎來(lái)了一次重大升級(jí),主要包括如下重點(diǎn)功能新增華南區(qū)域節(jié)點(diǎn)擴(kuò)展包,推出合規(guī)解決方案,新增中國(guó)內(nèi)地體驗(yàn)版。后續(xù)將進(jìn)一步支持回源多區(qū)域部署等功能,助力政府金融企業(yè)快速安全的實(shí)現(xiàn)改造。Web系統(tǒng)承載著各企事業(yè)單位的門戶、注冊(cè)登錄、業(yè)務(wù)執(zhí)行等職責(zé),很容易遭受各種類型的惡意流量攻擊,影響應(yīng)用可用性、損害安全性或消耗過(guò)多的資源,UCloud Web應(yīng)用防火墻UWAF則可以有效保護(hù)用戶的 Web 應(yīng)...
摘要:第一步不管是還是,想要隱藏文件,需要打開(kāi)組件的配置,在進(jìn)行后續(xù)的操作第二步下配置文件內(nèi)容如下項(xiàng)目域名的配置整體是放在這個(gè)目錄下面改目錄下其中一個(gè)文件的內(nèi)容域名項(xiàng)目地址下偽靜態(tài)配置入口文件的同級(jí)目錄下,放置文件內(nèi)容如下 第一步 : 不管是 apache 還是 nginx ,想要隱藏 Index.php 文件,需要打開(kāi) urlManager 組件的配置,在進(jìn)行后續(xù)的操作 show...
閱讀 2460·2021-11-23 09:51
閱讀 2061·2021-10-14 09:43
閱讀 2846·2021-09-27 13:35
閱讀 1225·2021-09-22 15:54
閱讀 2607·2021-09-13 10:36
閱讀 3959·2019-08-30 15:56
閱讀 3483·2019-08-30 14:09
閱讀 1800·2019-08-30 12:57