Codeigniter - Как маршрутизировать контроллер в зависимости от того, существует поддомен или нет - PullRequest
0 голосов
/ 28 декабря 2011

Я создаю веб-приложение SaaS в codeigniter и пытаюсь определить, как маршрутизировать конкретный контроллер, основываясь на том, существует поддомен или нет.

В настоящее время у меня это так, если вы установите URL-адрес subdomain.example.com, мой контроллер по умолчанию проверяет, существует ли субдомен в URL-адресе в базе данных, и если нет, то отображает страницу ошибки.

public function __construct() 
    {
        parent::__construct();
        $subdomain_arr = explode('.', $_SERVER['HTTP_HOST'], 2); //creates the various parts  
        $subdomain_name = $subdomain_arr[0]; //assigns the first part
        //echo "subdomain_name = $subdomain_name";

        // if the subdomain does not exist, redirect to error page
        if(!$this->subdomainExists($subdomain_name)) {
            redirect('error/index');
        } else {
            $this->subdomain = $subdomain_name;
        }
    }

Это прекрасно работает для URL, когда пользователь вводит субдомен, но теперь, если пользователь вводит URL без субдомена, например example.com, я хочу использовать другой контроллер.

Каков наилучший способ достичь этого? Я думал о том, чтобы сделать следующее, но не похоже, чтобы перенаправление происходило каждый раз, когда кто-то обращается к example.com.

// if no subdomain was entered, redirect to controller 'aDifferentController'
// else if a subdomain was entered, check that it exists in the database and if not redirect to an error page.
if(the url entered does not contain a subdomain) {
    redirect('aDifferentController');
} else if(!$this->subdomainExists($subdomain_name)) {
    redirect('error/index');
} else {
    $this->subdomain = $subdomain_name;
}

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Почему бы не условно объявить маршруты на основе поддоменов.

в rout.php, сделайте это

if (strstr($_SERVER['HTTP_HOST'], 'some-subdomain.mydomain.com')) {
 $route['uristring'] = "controller/method";
}
0 голосов
/ 28 декабря 2011

Вам необходимо выяснить, каков наиболее вероятный сценарий, больше людей, вероятно, перейдут на поддомены, они с большей вероятностью перейдут на основной сайт?

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

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

Другой вариант (и, возможно, лучше на мой взгляд) - это выполнитьперенаправить с помощью .htaccess до того, как он достигнет воспламенителя кода, но это зависит от того, какой уровень доступа у вас есть к вашему серверу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...