$wgServer

Материал из Викиреальностя
Перейти к: навигация, поиск
Главные настройки: $wgServer
Базовый URL сервера.
Появилось, начиная с версии: pre 1.1.0
Удалено в версии: ещё используется
Допустимые значения: Префикс URL (протокол, хост, опционально порт; без части пути)
Значение по умолчанию: (создаётся динамически)

Другие настройки: По алфавиту | По функциональности

[править] Детали

Базовый URL сервера, включающий протокол и без последующего слеша («/»). (например «http://ru.wikipedia.org»).

Используется когда производный полный URL указывает на wiki, в конкретных случаях:

  • HTTP перенаправленя на редактирования и проверки URL
  • ссылки на статьи из RSS/Atom
  • и другое!

Значение по-умолчанию вычисляется автоматически (может быть переписан). Смотри ниже, чтобы узнать больше.

Некоторые веб-сервера возвращают имена по-умолчанию или внешние имена для данного хостинга, которые не нужны; для применения ServerName директивы может быть в httpd.conf Apache что-либо не установлено или не настроено, тогда можно получить неожиданный «localhost» для имени сервера. Для этого желательно настроить веб-сервер правильно, но можно также исправить при помощи LocalSettings.php.

Переписать можно также для определённых хостингов или настроек прокси.

Содержание


[править] История

[править] До 1.2.0

Вычислялся вызовом getenv( "SERVER_NAME" );.

[править] 1.2.0

Переключается на использование PHP $_SERVER[] массива взамен getenv(). Автоматически получает номер порта.

$wgServer           = "http://" . $_SERVER["SERVER_NAME"];
if( $_SERVER["SERVER_PORT"] != 80 ) $wgServer .= ":" . $_SERVER["SERVER_PORT"];

[править] 1.3.0

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

 # проверяет использует ли сервер https: 
 $wgProto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
 
 if ( @$wgCommandLineMode ) {
        $wgServer = $wgProto.'://localhost';
 } else {
        $wgServer           = $wgProto.'://' . $_SERVER['SERVER_NAME'];
        if( $_SERVER['SERVER_PORT'] != 80 ) $wgServer .= ":" . $_SERVER['SERVER_PORT'];
 }
 unset($wgProto);

[править] 1.3.8

Получает больше деталей из массива $_SERVER[].

 if( isset( $_SERVER['SERVER_NAME'] ) ) {
        $wgServerName = $_SERVER['SERVER_NAME'];
 } elseif( isset( $_SERVER['HOSTNAME'] ) ) {
        $wgServerName = $_SERVER['HOSTNAME'];
 } else {
        # FIXME: Fall back on... something else?
        $wgServerName = 'localhost';
 }
 
 # проверяет использует ли сервер https:
 $wgProto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
 
 $wgServer = $wgProto.'://' . $wgServerName;
 if( isset( $_SERVER['SERVER_PORT'] ) && $_SERVER['SERVER_PORT'] != 80 ) {
        $wgServer .= ":" . $_SERVER['SERVER_PORT'];
 }
 unset($wgProto);

[править] 1.5.0

Добавлены некоторые дополнительные альтернативы для $wgServerName, если ранние тесты были неудачны, и проверяет HTTPS протокол на портах по-умолчанию перед изменением.

if( isset( $_SERVER['SERVER_NAME'] ) ) {
        $wgServerName = $_SERVER['SERVER_NAME'];
} elseif( isset( $_SERVER['HOSTNAME'] ) ) {
        $wgServerName = $_SERVER['HOSTNAME'];
} elseif( isset( $_SERVER['HTTP_HOST'] ) ) {
        $wgServerName = $_SERVER['HTTP_HOST'];
} elseif( isset( $_SERVER['SERVER_ADDR'] ) ) {
        $wgServerName = $_SERVER['SERVER_ADDR'];
} else {
        $wgServerName = 'localhost';
}
 
# проверяет использует ли сервер https:
$wgProto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
 
$wgServer = $wgProto.'://' . $wgServerName;
# Если порт не стандартный, добавляет это в URL
if(    isset( $_SERVER['SERVER_PORT'] )
    && (    ( $wgProto == 'http' && $_SERVER['SERVER_PORT'] != 80 )
         || ( $wgProto == 'https' && $_SERVER['SERVER_PORT'] != 443 ) ) ) {
 
        $wgServer .= ":" . $_SERVER['SERVER_PORT'];
}
unset($wgProto);

[править] 1.7.0

Единственное изменение состоит в том, что порт не добавляется к имени сервера, если оно уже содержит двоеточие.

/** URL of the server. It will be automatically built including https mode */
$wgServer = '';
 
if( isset( $_SERVER['SERVER_NAME'] ) ) {
        $wgServerName = $_SERVER['SERVER_NAME'];
} elseif( isset( $_SERVER['HOSTNAME'] ) ) {
        $wgServerName = $_SERVER['HOSTNAME'];
} elseif( isset( $_SERVER['HTTP_HOST'] ) ) {
        $wgServerName = $_SERVER['HTTP_HOST'];
} elseif( isset( $_SERVER['SERVER_ADDR'] ) ) {
        $wgServerName = $_SERVER['SERVER_ADDR'];
} else {
        $wgServerName = 'localhost';
}
 
# check if server use https:
$wgProto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
 
$wgServer = $wgProto.'://' . $wgServerName;
# If the port is a non-standard one, add it to the URL
if(    isset( $_SERVER['SERVER_PORT'] )
    && !strpos( $wgServerName, ':' )
    && (    ( $wgProto == 'http' && $_SERVER['SERVER_PORT'] != 80 )
         || ( $wgProto == 'https' && $_SERVER['SERVER_PORT'] != 443 ) ) ) {
 
        $wgServer .= ":" . $_SERVER['SERVER_PORT'];