Это кажется клише. Давайте поговорим об этом еще раз. В этой статье мы должны сделать две вещи.
Выполненные задачи
Доменное имя модуля II
Пусть urlManager поддерживает вторичные доменные имена
У нас есть два модуля, по одному для каждого. администратор и 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', //method has been specified 'http:/<_m:/(sys | admin | photo)>. abc.com'=>'<_m>'// Method Two or more secondary domain names can also be adapted at the same time. ], ],
Все кончено?
Что ж, все в порядке, чтобы развернуть многомодульное вторичное доменное имя. Арбей знает, что вы, должно быть, думаете, что эта статья-заглавная вечеринка. Зачем писать такое глубокое название? ???
На самом деле развертывание вторичных доменных имен не является сложным, и некоторые проблемы, вызванные развертыванием, могут быть по требованию или техническими.
@@ [электронная почта защищена] @
Далее давайте приведем пример требований.
Мы рекомендуем использовать urlManager для создания ссылок вместо написания http://xxxx.xxx.xxx/xxx.html искусственно, что принесет большую пользу будущим изменениям в правилах URL.
Но после вторичного доменного имени мне становится сложнее создать ссылку на модуль wechat в модуле администратора. Относительный URL-адрес определенно не очень хорош, но если мы воспользуемся ссылкой, предоставленной Yii createAbsoluteUrl Его доменная часть, также использующая текущее доменное имя, не может быть указана, поэтому это нецелесообразно, похоже, ее необходимо изменить.
Принцип: Не изменяйте исходный код Yii.
Создайте новый класс urlManager
Без изменения какого-либо метода urlManager нам необходимо расширить его, поэтому первым шагом является создание класса urlManager в компонентах приложения, который наследуется от класса urlManager yii и добавляет атрибут, называемый именем домена.
namespace app\components; use Yii; use yii\helpers\Url; use yii\base\InvalidConfigException; class UrlManager extends yii\web\UrlManager { 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, чтобы добавить указанное доменное имя.
Настройка config/web.php
Мы настраиваем элемент под названием admin Url Manager в web.php компоненты.
... 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ 'http://<_m:(sys|admin|photo)>.zhihu-local.com'=>'<_m>', ], ], 'adminUrlManager'=>[ 'class' => 'app\components\UrlManager', 'domainName' => 'admin.abc.com', ] ...
Что ж, на этом этапе мы выполним следующий код в любом модуле или приложении
echo Yii::$app->adminUrlManager->createAbsoluteUrl(['default/index']);
Он выведет абсолютный адрес, который мы хотим. http://admin.abc.com/index.ph…
Цель была достигнута.
Сегодня второй день фестиваля Лодок-драконов, потому что сопровождающая семья играет в Гранд-Каньоне Лонгтан, сеть отелей не очень хороша ночью, просто отредактирована, мне очень жаль, здесь я и Бэйшао также желаем вам счастливого отдыха, больше сопровождайте семью, они самые важные.
Добро пожаловать на мою маленькую станцию для получения дополнительных видео yii2 http://nai8.me