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