$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'];