За последние 24 часа нас посетили 20184 программиста и 1717 роботов. Сейчас ищет 1761 программист ...

Редирект с поддомена на домен с сохранением url

Тема в разделе "PHP для новичков", создана пользователем Novi4ek_pro, 24 фев 2018.

  1. Novi4ek_pro

    Novi4ek_pro Новичок

    С нами с:
    11 мар 2015
    Сообщения:
    12
    Симпатии:
    1
    Добрый день. Нужна помощь. Не могу решить следующую задачу.

    Есть сайт site.ru и поддомен belgorod.site.ru- как сделать, чтобы при запросе c поддоменом, сам поддомен являлся как индификатор при работе с основным доменом?

    Например, при запросе belgorod.site.ru я давал серверу понять, что мы работаем с "belgorod" и уже вытаскивал из БД нужную информацию и выводил ее на страницах:
    belgorod.site.ru/contact,
    belgorod.site.ru/reklama,
    и т.д и т.п
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @Novi4ek_pro, варианты есть разные.
    Проверять можно регуляркой. Например, так
    PHP:
    1. <?php
    2. $urls = [
    3.     'belgorod.site.ru/contact',
    4.     'site.ru/contact',
    5.     'kursk.site.ru/contact',
    6.     'site.ru',
    7.     'verhnie.petushki.site.ru',
    8. ];
    9. foreach($urls as $url) {
    10.     echo preg_match('/^.+(?=.site.ru)/', $url, $matches) ? $matches[0] : 'This is not a subdomain!', PHP_EOL;
    11. }
    Результат:
    Код (Text):
    1. belgorod
    2. This is not a subdomain!
    3. kursk
    4. This is not a subdomain!
    5. verhnie.petushki
     
    keren нравится это.
  3. Novi4ek_pro

    Novi4ek_pro Новичок

    С нами с:
    11 мар 2015
    Сообщения:
    12
    Симпатии:
    1
    А как переправлять с поддомена на основной, чтобы при этом сохранился url?

    Например, на странице site.ru/contact выводятся номера телефонов, адреса и т.д. Не очень хочу на каждом поддомене создавать одну и ту же страницу.

    Нужно сделать, чтобы при поддомене belgorod. я принимал это за индификатор,искал в бд и выводил на site.ru/contact только для визуализации использовать еще и поддомен- belgorod.site.ru/contact

    Через .htaccess ?
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.840
    Симпатии:
    652
    Не хотите дублировать на каждом, не дублируйте. На своих сайтах лучше использовать прямые ссылки без редиректов.

    Разделите все страницы на два вида, региональные и общие. При формировании ссылок на первые (со страниц на поддоменах) используйте абс. адресацию без учета домена (/path), а на вторые – абс. адресацию с использованием осн. домена (//domain/path).

    Закрывать редиректом можете только ради того, чтобы не закрывать 404-ой. В любом случае сопоставляйте признак региональности/общности у страницы и в имени хоста, откуда и определяйте, нужно ли отдавать страницу или нет.

    Если сайт располагается в именованном вирт. хосте (не в дефолтном и т.п.), то у вас имя хоста будет гарантированно располагаться в $_SERVER['HTTP_HOST']. Не забывайте, что в имени хоста может присутствовать незначащая точка в конце, ее нужно обрезать (www. тоже, если ваш скрипт занимается в том числе и этим). Во всех наших «мультисайтовых» движках сделано именно так.
     
  5. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Зачем? Вы же можете использовать псевдонимы. В этом случае и belgorod.site.ru, и Novi4ek_pro.site.ru будет открывать сайт, как если бы вы перешли просто по адресу site.ru
     
  6. Novi4ek_pro

    Novi4ek_pro Новичок

    С нами с:
    11 мар 2015
    Сообщения:
    12
    Симпатии:
    1
    У меня так и пытается найти поддомен при запросе belgorod.site.ru, которого не существует.

    Нашел один вариант, попробуем его:

    в днс добавил: *.site.ru
    в конфиге Apache: ServerAlias *.site.ru

    И вроде должно быть вроде как динамическое создание поддоменов, и реагировать на запросом с поддоменом сервер не будет и работа идет с основного домена. Завтра проверю. Пока днс обновятся и ТП поменяет конфиг Apache