Difference between #2 and #3 of
How to make UrlManager createAbsoluteUrl work with sub-domains

Revision #3 has been created by CeBe on Mar 25, 2018, 2:06:47 AM with the memo:

update markdown styling
« previous (#2)

Changes

Title unchanged

How to make UrlManager createAbsoluteUrl work with sub-domains

Category unchanged

How-tos

Yii version changed

2.0

Tags changed

yii2, url manager, urlmanager, URL, subdomain, domain,sub-domains, domainyii2,url manager,urlmanager

Content changed

[...]
So in this guide, I am going to show you the best and only way I found to create links to another one of your Yii apps (ie: backend or frontend) that are on a sub-domain.

---

##
# My method for handling sub-domains

Unfortunately, there isn't an accurate and reliable way to grab only the domain name. A bunch of regex or stripping, or pulling from a huge list of valid domain extensions, etc. Nothing you want running on a site with tons of users, it will create a bottle neck real quick. Yeah, you could implement caching and you should for large volume sites. However, I prefer to cache lean efficient code instead of using caching to save my rear on terrible logic.
[...]
`common/config/bootstrap.php`
~~~
 
```php
// URL Manager Aliases Yii::setAlias('@domainName', (YII_ENV === 'dev') ? 'yii2-members-system.dev' : 'yourlivesite.com'); Yii::setAlias('@frontendSubdomain', 'users'); Yii::setAlias('@backendSubdomain', 'admin'); ~~~``` Create `common/components/UrlManager.php` ~~~
 
```php

<?php
namespace common\components;
[...]
}
~~~```

Now in whichever app your needing to link to another subdomain, you need to edit it's main config. So if in backend you need to link to frontend (or mainsite needs to link to frontend as in my members system), then edit your backend config.
[...]
Add this to your config under the components array:

~~~```php
'urlManagerFrontend' => [
'class' => 'common\components\UrlManager',
[...]
],
],
~~~``` Now, wherever you need to create a link (or get the url for any reason) use CreateAbsoluteUrl inside the new UrlManager like so: ~~~``` Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/login']) ~~~``` In my app, it generates a link for my mainsite to the users app: `http://users.yii2-members-system.dev/site/login`. This was so on my mainsite I can link to the user's subdomain for them to login. I hope this helps someone, and I hope Yii actually adopts a solution for this sort of linking and handling sub-domains.
1 0
3 followers
Viewed: 38 492 times
Version: 2.0
Category: How-tos
Written by: Wade Shuler
Last updated by: CeBe
Created on: Apr 16, 2017
Last updated: 6 years ago
Update Article

Revisions

View all history