За последние 24 часа нас посетили 62114 программистов и 1791 робот. Сейчас ищут 919 программистов ...

Определение базового URL сайта программно при смене хостинга

Тема в разделе "Прочие вопросы по PHP", создана пользователем sadex, 24 фев 2014.

  1. sadex

    sadex Новичок

    С нами с:
    8 июл 2013
    Сообщения:
    6
    Симпатии:
    0
    В конфигах разных CMS и форумов прописывается базовый URL сайта по типу:
    Код (Text):
    1. $base_url  = 'http://some_site/smf/'; // например, для известного форума SMF
    При этом при смене хостинга этот $base_url приходится прописывать заново вручную.

    Вопрос к корифеям. Возможно ли определять автоматически, программно, этот самый базовый URL сайта, чтобы все работало при смене хостинга?

    Пока ничего кроме
    Код (Text):
    1. $base_url = 'http://'.$_SERVER['SERVER_NAME'].'/';
    не пришло в голову.

    UPD. Уточнение. Для внутренних путей и ссылок применяется относительная адресация, а для внешних - абсолютная адресация.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Определение базового URL сайта программно при смене хост

    типа того
     
  3. sadex

    sadex Новичок

    С нами с:
    8 июл 2013
    Сообщения:
    6
    Симпатии:
    0
    Re: Определение базового URL сайта программно при смене хост

    Еще советуют
    Код (Text):
    1. $base_url = 'http://'.$_SERVER['HTTP_HOST'];
    А здесь отличие между HTTP_HOST и SERVER_NAME
    http://www.hostland.su/books/php5/page/31.html

    Выдержка из текста по ссылке

    Переменную окружения http_host очень часто путают с другой переменной, server_name. В большинстве случаев серверы конфигурируют так, что обе переменные содержат одинаковое значение (например, в Apache для этого существует директива useCanonicaiName off), однако возникают ситуации, когда это не так. Величина http_host всегда идентична тому доменному имени, который ввел пользователь в браузере, в то время как server_name иногда может содержать строку, жестко записанную в конфигурации сервера (в Apache это происходит при указании
    UseCanonicaiName on).

    Еще такое пишут. Вообще в массиве $_SERVER добрая часть значений описывается, как "зависит от настроек сервера, работа не гарантирована", потому как $_SERVER - это то, что сказал сервер, а сказал он то, как настроил его админ.
    Это как бы одна из причин того, почему $base_url надежнее прописывать вручную, при смене хостинга, а не определять программно.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Определение базового URL сайта программно при смене хост

    да, лучше прописывать, это так.
    в любом случае один хрен её где-то придётся прописывать.
     
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Определение базового URL сайта программно при смене хост

    не просто так умные люди пришли к такому решению. вам не кажется?
    если бы был 100% способ определить автоматически - то не прописывали бы в файле. тем более на чужих хостингах, где неизвестно как и что настроено.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Re: Определение базового URL сайта программно при смене хост

    Пример автоматического вычисления в Symfony2: https://github.com/symfony/HttpFoundation/blob/master/Request.php#L1663
    Оно по крайней мере учитывает "особые случаи", уж не знаю все ли :)

    Считаю, что лучше прописывать в конфиге. Всё равно параметры соединения с БД и разные секреты приходится явно прописывать, почему бы не добавить еще base_url ?
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Re: Определение базового URL сайта программно при смене хост

    1854 строки кода ради экономии пары секунд времени администратора, но не со 100% вероятностью? Воистину, энтропия вселенной растет.