Можно ли назначить поддомен для модуля? Например, seller.domain.com для модуля продавца

Ниже мой виртуальный хост в локальной системе:

<VirtualHost *:80>
ServerAdmin kishan@localhost.com
DocumentRoot /opt/lampp/htdocs/advanced
ServerName dev.com
ServerAlias dev.com
ErrorLog logs/mysite.local-error_log
CustomLog logs/mysite.local-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin kishan@localhost.com
DocumentRoot /opt/lampp/htdocs/advanced
ServerName seller.dev.com
ServerAlias seller.dev.com
ErrorLog logs/mysite.local-error_log
CustomLog logs/mysite.local-access_log common
</VirtualHost>

Бэкенд для администрирования, поэтому установите для dev.com/webxadmin/login

ниже приведена процедура для изменения имени на backend/web/index.php на "webxadmin".

<?php
namespace common\components;


class Request extends \yii\web\Request {
    public $web;
    public $adminUrl;

    public function getBaseUrl(){
        return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl;
    }


    /*
        If you don't have this function, the admin site will 404 if you leave off 
        the trailing slash.

        E.g.:

        Wouldn't work:
        site.com/admin

        Would work:
        site.com/admin/

        Using this function, both will work.
    */
    public function resolvePathInfo(){
        if($this->getUrl() === $this->adminUrl){
            return "";
        }else{
            return parent::resolvePathInfo();
        }
    }
}

бэкенд / конфигурации / main.php

'components' => [
        'request' => [
            'class' => 'common\components\Request',
            'web'=> '/backend/web',
            'adminUrl' => '/webxadmin'
        ],

Вот.htaccess по корню

Options +FollowSymlinks
RewriteEngine On

# deal with admin first

RewriteCond %{REQUEST_URI} ^/(webxadmin)
RewriteRule ^webxadmin/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^webxadmin/css/(.*)$ backend/web/css/$1 [L]

RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} ^/(webxadmin)
RewriteRule ^.*$ backend/web/index.php [L]




RewriteCond %{REQUEST_URI} ^/(assets|css)
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]

RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php

Вот мой модуль внутри бэкэнда / module / seller / seller.php. Работая с проектом yii-2, у меня есть сайт электронной коммерции. Я пытаюсь получить доступ к своему модулю продавца на поддомене, как seller.dev.com, со всеми контроллерами и действиями?

но мне нужен доступ к моему модулю в поддомене, как я могу это сделать?

Я попробовал этот метод внутри компонента->urlmanager не работает.

'seller.dev.com/'=>'seller/index/login',

Заранее спасибо.

2 ответа

Решение

Если вы работаете с пользовательским компонентом запроса и.htaccess.
Варианты +FollowSymlinks Переписать Engine Вкл

# deal with admin first

RewriteCond %{REQUEST_URI} ^/(webxadmin)
RewriteRule ^webxadmin/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^webxadmin/css/(.*)$ backend/web/css/$1 [L]

RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} ^/(webxadmin)
RewriteRule ^.*$ backend/web/index.php [L]




RewriteCond %{REQUEST_URI} ^/(assets|css)
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]

RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php

Конец файла.htaccess добавьте эту строку ниже.

RewriteRule ^.*$ backend/web/index.php

Правильный синтаксис для сопоставления правила на основе имен хостов:

'http://seller.dev.com'=>'seller/index/login',

Если это не сработает, вы должны искать проблему в вашей пользовательской логике перезаписи или в классе Request. Я не очень понимаю, что вы пытаетесь делать там.

Начиная с Yii 2.0.11 вы также можете использовать следующий синтаксис, чтобы иметь относительный URL протокола, который работает с http а также https:

'//seller.dev.com'=>'seller/index/login',
Другие вопросы по тегам