@yoursmileua

Как переадресовать функцию на поддомен в codeigniter?

Всем привет
Есть адрес такого типа который открывает страницу пользователя:
infoumnik.local/user_site/sub/user2
Как сделать чтобы страница пользователя открывалась по такому адресу?
http://user2.infoumnik.local/
Разобрался только как сделать на папку
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.infoumnik\.local$
RewriteCond %{HTTP_HOST} (www\.)?(.*)\.infoumnik\.local$
RewriteCond %{REQUEST_URI} !user_site/sub/
RewriteRule ^(.*)$ user_site/sub/%2/$1


Спасибо за помощь!!!!
  • Вопрос задан
  • 261 просмотр
Пригласить эксперта
Ответы на вопрос 3
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
Да никак - доменное имя тебе надо, туда скопировать еще один кодигнайтер, и сделать там контроллер и экшен, который из той же базы будет другое тянуть.

Или хитрить уже с серваком, чтобы он по поддомену тебе запрашивал файл лежащий в совершенно другой директории от корневой. Сомневаюсь что это делается простым редиректом, ведь твой хтацесс отвечает как раз за текущую папку, а ты воюешь с доменными именами.

Идея которая самая простая но глупая - на поддомене запрашивать страничку каким-нибудь file_get_contents, но работать с этим будет чертовски неудобно.
Ответ написан
@yoursmileua Автор вопроса
Как Вариант можно сделать что то типа такого
$subdomain_arr = explode('.', $_SERVER['HTTP_HOST'], 2); 
        $subdomain_name = $subdomain_arr[0]; 
        $this->db->from('user_site')->where('subdomain_name', $subdomain_name);
        $query = $this->db->get();
        
        $subdomain_info = $query->row();        
        if($query->num_rows() < 1)
        {
            redirect('blog');
        } //иначе открываем вид

Т. е. что я хотел этим написать. Сначала мы узнаем поддомен с помощью explode и если он есть в базе данных то открываем вид по этому поддомену.
Если в базе нет то редирект на любую страницу.

Изначально если писать
user1.infoumnik.local
user2.infoumnik.local
user3.infoumnik.local
и т.д. то просто открывает страница которая равна infoumnik.local, т.е как будто и нет поддомена.
Мой вышеприведенный код по сути будет работать похожим образом только будет загрузкой вида подставлять его в адрес, например, user2.infoumnik.local.

Но минус в том, что придется это проверять в каждой функции, а это много запросов.
Что думаете? Ниче я не попутал?
Ответ написан
Комментировать
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
1) В dns убеждаемся, что есть A запись для поддоменов
2) делаете wildcard виртуальный сервер *.infoumnik.local в вашем веб-сервере, который смотрит на папку с текущим сайтом
3) Делаем внутренний rewrite в конфиге веб-сервера с * (кроме www) на infoumnik.local/user_site/sub/*
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы