摘要:二級域名管理問題我們推薦使用來生成鏈接,而不是人為寫這樣,這樣對以后適配規則的更改有莫大的好處。
這似乎是個老生常談的問題,那就再談一次吧,本文我們要完成兩件事件。
完成的任務
將模塊二級域名化
讓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>" //方法二 多個二級域名同時適配也可以 ], ],完了么?
恩,完了,多模塊的二級域名部署就可以了,阿北知道你一定認為此文為標題黨,干嘛寫這么有深度的標題那????
其實二級域名的部署并不復雜,復雜在部署后所引發的一些列問題,這種問題可能是需求上的,可能是技術上的。
@@nai8@@
接下來就舉一個需求上的例子。
二級域名管理問題我們推薦使用urlManager來生成鏈接,而不是人為寫 http://xxx.xxx.xxx/xxx.html 這樣,這樣對以后適配url規則的更改有莫大的好處。
但是當二級域名后,我在 admin 模塊下想 生成一個 wechat 模塊的鏈接就變的困難了,相對url肯定是不行了,但是如果我們用yii提供的 createAbsoluteUrl ,它的domain部分也是使用當前域名,無法指定,因此也行不通,看來要改造一下。
原則:不改動yii源代碼。
新建一個 urlManager 類在不改變urlManager任何方法的前提下,我們需要擴展一下它,所以第一步我們在 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 函數,將指定的 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下執行下面代碼
echo Yii::$app->adminUrlManager->createAbsoluteUrl(["default/index"]);
都會輸出我們想要的絕對地址。
http://admin.abc.com/index.ph...
目的達到了吧。
再說幾句今天是端午小長假第二天,因陪家人來龍潭大峽谷玩,晚上旅店的網絡不好,剛剛編輯好發出來,實在不好意思,在這里我和北嫂也一起祝大家節日快樂,多陪陪家人,他們才是最重要的。
歡迎來到我的小站 更多yii2視頻 http://nai8.me
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/23053.html
摘要:例如,淘寶登錄的,登錄成功的。所以思考如何實現這種跨域的登錄就顯得尤為重要了。需求分析進入登錄頁面的地址登錄成功后跳轉的地址下面我主要是以框架為例解說一下我是怎么實現這種跨越的登錄的。 序言 近年來網絡發展很快,參與網購的人越來越多,但是大家在網購的時候不知到有沒有注意到無論是淘寶還是京東,他們用的都是二級域名,登錄一個URL,登錄成功后又是一個URL,作為一個開發者反正我是注意到了。...
摘要:例如,淘寶登錄的,登錄成功的。所以思考如何實現這種跨域的登錄就顯得尤為重要了。需求分析進入登錄頁面的地址登錄成功后跳轉的地址下面我主要是以框架為例解說一下我是怎么實現這種跨越的登錄的。 序言 近年來網絡發展很快,參與網購的人越來越多,但是大家在網購的時候不知到有沒有注意到無論是淘寶還是京東,他們用的都是二級域名,登錄一個URL,登錄成功后又是一個URL,作為一個開發者反正我是注意到了。...
摘要:之版本控制之前我寫過兩篇關于如何搭建,以及認證等處理,但是沒有涉及到版本管理,今天就來談談版本管理如何實現。如果你還沒有安裝,你可以按照這里的說明進行安裝。 Yii2.0 RESTful API 之版本控制 之前我寫過兩篇關于 Yii2.0 RESTful API 如何搭建,以及 認證 等處理,但是沒有涉及到版本管理,今天就來談談版本管理如何實現。 索性就從頭開始一步一步搭建吧,但是關...
摘要:近期,又迎來了一次重大升級,主要包括如下重點功能新增華南區域節點擴展包,推出合規解決方案,新增中國內地體驗版。后續將進一步支持回源多區域部署等功能,助力政府金融企業快速安全的實現改造。Web系統承載著各企事業單位的門戶、注冊登錄、業務執行等職責,很容易遭受各種類型的惡意流量攻擊,影響應用可用性、損害安全性或消耗過多的資源,UCloud Web應用防火墻UWAF則可以有效保護用戶的 Web 應...
摘要:第一步不管是還是,想要隱藏文件,需要打開組件的配置,在進行后續的操作第二步下配置文件內容如下項目域名的配置整體是放在這個目錄下面改目錄下其中一個文件的內容域名項目地址下偽靜態配置入口文件的同級目錄下,放置文件內容如下 第一步 : 不管是 apache 還是 nginx ,想要隱藏 Index.php 文件,需要打開 urlManager 組件的配置,在進行后續的操作 show...
閱讀 2352·2021-11-23 09:51
閱讀 2003·2021-10-14 09:43
閱讀 2770·2021-09-27 13:35
閱讀 1151·2021-09-22 15:54
閱讀 2504·2021-09-13 10:36
閱讀 3802·2019-08-30 15:56
閱讀 3411·2019-08-30 14:09
閱讀 1718·2019-08-30 12:57