Конфигурация MediaWiki – странное поведение перенаправления после POST-запроса формы

Вопрос или проблема

Недавно я настроил вики с использованием MediaWiki, но испытываю серьезные трудности с правильной настройкой конфигурации ShortURL (например, чтобы страницы отображались как Main_Page вместо index.php?title=Main_Page). Она установлена в подпапке поддомена (например, http://intranet.example.com/mediawiki/), и в настоящее время мой файл .htaccess в этой папке mediawiki содержит следующие строки (я создал этот файл, его нет в поставке с MediaWiki):

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/mediawiki/.*$
RewriteCond %{REQUEST_URI} !^/mediawiki/index.php.*$
RewriteCond %{REQUEST_URI} !^/mediawiki/load.php.*$
RewriteCond %{REQUEST_URI} !^/mediawiki/skins/.*$
RewriteRule ^(.*)$ index.php/$1 [L]

А файл LocalSettings.php содержит следующие строки, которые влияют на маршрутизацию запросов страниц:

$wgScriptPath      = "/mediawiki";
$wgScriptExtension = ".php";
$wgArticlePath     = "/mediawiki/$1";
$wgUsePathInfo     = true;
$wgServer          = "http://intranet.example.com/";

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

В этих условиях пользователь каждый раз перенаправляется на http://intranet.example.com//mediawiki/Main_Page, даже когда Main_Page не является текущей страницей (очень раздражает), и обратите внимание на лишний слэш? Это вызывает ошибку HTTP 404.

На странице редактирования URL действия формы поста — /mediawiki/index.php?title=Main_Page&action=submit, что, на мой взгляд, нормально. Проблема, похоже, связана с внутренним перенаправлением, которое происходит после завершения обработки, так как изменения на странице сохраняются должным образом.

Не знаю, дает ли это какие-либо подсказки, но я замечаю из сгенерированного исходного кода, что стили и ссылки на скрипты начинаются с http://intranet.example.com//mediawiki/load.php?..., и этот второй слэш снова появляется (хотя эти ресурсы все равно каким-то образом загружаются нормально).

Насколько я могу судить, я правильно следовал официальным инструкциям по установке и настройке MediaWiki. Буду признателен за любую помощь! Очевидно, что текущее поведение недостаточно надежно. Пользователи, не знакомые с технологиями, не будут знать, что им нужно редактировать URL каждый раз, когда перенаправление ломается!


Если я убираю начальный слэш из $wgArticlePath, то запрос http://intranet.example.com/mediawiki/ приводит к следующим перенаправлениям в моем журнале Apache:

"GET /mediawiki/ HTTP/1.1" 301 -
"GET /mediawiki/mediawiki/Main_Page HTTP/1.1" 301 -
"GET /mediawiki/mediawiki/mediawiki/Mediawiki/Main_Page HTTP/1.1" 301 -
"GET /mediawiki/mediawiki/mediawiki/Mediawiki/mediawiki/Mediawiki/mediawiki/Mediawiki/Main_Page HTTP/1.1" 301 -

и так далее, пока в конечном итоге я не получаю страницу “Bad title” WikiPedia, возвращенную в браузер.

Решение, которое сейчас работает и протестировано — в файле LocalSettings.php, делюсь на случай, если кто-то еще столкнется с этой проблемой:

$wgScriptPath      = "/mediawiki";
$wgScriptExtension = ".php";
$wgArticlePath     = "/mediawiki/$1";
$wgUsePathInfo     = true;
$wgServer          = "http://intranet.example.com";

Проблема была вызвана слэшем в конце параметра $wgServer.

В моем случае это было вызвано добавлением настройки

$wgServer          = "intranet.example.com";

и как только я изменил это на

$wgServer          = "https://intranet.example.com";

все стало нормально.

Ответ или решение

Проблема, с которой вы столкнулись при настройке MediaWiki, касается некорректного поведения перенаправления после отправки форм, особенно заметного при входе и выходе из системы или редактировании страниц. Это может привести к ошибкам HTTP 404 из-за дублирующихся косых черт в URL. Давайте рассмотрим, как разрешить эту проблему, уделяя внимание ключевым аспектам конфигурации.

Актуальные настройки

Файл .htaccess

Ваш текущий файл .htaccess содержит следующие строки:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/mediawiki/.*$
RewriteCond %{REQUEST_URI} !^/mediawiki/index.php.*$
RewriteCond %{REQUEST_URI} !^/mediawiki/load.php.*$
RewriteCond %{REQUEST_URI} !^/mediawiki/skins/.*$
RewriteRule ^(.*)$ index.php/$1 [L]

Эти строки осуществляют перенаправление запросов, чтобы поддерживать короткие URL. Однако вам необходимо убедиться, что правила корректно обрабатывают запросы и не создают дополнительные косые черты.

Файл LocalSettings.php

Ваши настройки в LocalSettings.php выглядят следующим образом:

$wgScriptPath      = "/mediawiki";
$wgScriptExtension = ".php";
$wgArticlePath     = "/mediawiki/$1";
$wgUsePathInfo     = true;
$wgServer          = "http://intranet.example.com/";

Ключевой проблемой здесь является наличие косой черты в конце строковой переменной $wgServer. Это может приводить к образованию неправильных форматов URL, как в случае с /mediawiki/Main_Page, что и вызывает дублирование.

Рекомендации по исправлению

  1. Измените значение $wgServer:
    Убедитесь, что в переменной $wgServer отсутствует конечная косая черта. Попробуйте настроить значение следующим образом:

    $wgServer          = "http://intranet.example.com";

    Либо, если у вас используется HTTPS:

    $wgServer          = "https://intranet.example.com";
  2. Проверка конфигурации:
    После изменения переменной $wgServer, вам следует протестировать перенаправления после отправки форм. Проанализируйте логи вашего веб-сервера, чтобы убедиться, что дополнительные косые черты больше не появляются.

  3. Перепроверка файла .htaccess:
    Убедитесь, что правила в .htaccess корректно обрабатывают все возможные случаи использования URL. Можно добавить дополнительные условия, чтобы убедиться, что дублирование не происходит.

Заключение

Ваши проблемы с переадресацией в MediaWiki были связаны с неправильной конфигурацией переменной $wgServer, которая могла вызвать ненужные косые черты в результирующих URL. После внесения изменений и тестирования конфигурации ваше приложение должно работать более стабильно. Учите пользователей вашего вики о возможных путях решения, если они столкнутся с похожими проблемами, чтобы повысить общий уровень удовлетворенности.

Если вам понадобятся дальнейшие советы или предложения по оптимизации работы MediaWiki, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...