Назад | Перейти на главную страницу

404 при попытке сократить URL-адреса для MediaWiki с помощью Lighttpd

Я новичок в этом, поэтому, пожалуйста, потерпите меня. Я установил MediaWiki на Lighttpd без проблем, за исключением того, что, когда я пытаюсь следовать инструкциям redwerks о том, как сократить URL-адреса для MediaWiki на Lighttpd, я всегда получаю очень разочаровывающее сообщение 404. Вот что я сделал:

на lighttpd.conf:

## MediaWiki
url.rewrite-once = (
    "^/wiki(/|$)" => "/w/index.php",
    "^/$" => "/w/index.php",
)
url.rewrite-if-not-file = (
    "^/w/images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2",
    "^/w/images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2&archived=1",
)

на LocalSettings.php:

$wgScriptPath = "/w";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;

Помощь очень ценится, я могу скоро заплакать.

Метод «без слез» использует превосходный генератор конфигурации.

Примечание: Эта попытка ответа также является неудачной; это просто не работает. В официальная страница MediaWiki именно по этой теме заявляет следующее:

Предупреждение: Эта страница с коротким URL-адресом содержит плохие советы по настройке вашего сервера, которые могут привести к тому, что некоторые страницы вашей вики не будут работать и / или могут вызвать проблемы при обновлении.

Он продолжает предлагать с помощью генератора Redworks, но это все равно не работает. Кроме того, официальная страница MediaWiki отправляет смешанные сообщения о том, что мощь работай. Я нашел эта страница на $wgUsePathInfo в котором говорится об этом интересном лакомом кусочке:

Примечание: Они часто ломаются, когда PHP настроен в режиме CGI. PATH_INFO может быть правильным, если cgi.fix_pathinfo установлен, но опять же, это может быть не так; lighttpd преобразует входящие данные пути в нижний регистр в системах с файловыми системами без учета регистра, а также были сообщения о проблемах на Apache. В целях безопасности мы продолжим отключать его по умолчанию в этих случаях.

Не тестировал это cgi.fix_pathinfo идея пока что, но размещаю это здесь как ссылку. Если кто-то может опубликовать канонический ответ, пожалуйста, сделайте это! При необходимости скопируйте мой ответ! Давай как-нибудь так уладим этот мишег.

Остальной ответ - который, похоже, не работает - следует ниже.


В опубликованный ответ Tgr отлично, но если вы посмотрите на вывод этого генератора с его настройками по умолчанию для Lighted версии 1.5+, то вот вывод:

## MediaWiki
url.rewrite-once = (
    "^/wiki(/|$)" => "/w/index.php",
    "^/$" => "/w/index.php",
)

# Protect against bug 28235 (ported from MediaWiki's .htaccess file)
$HTTP["url"] =~ "^/w/images/" {
    $HTTP["querystring"] =~ "\.[^\\/:*?\x22<>|%]+(#|\?|$)" {
        access.deny-all = "enable"
    }
}

# Deny access to deleted images folder"
$HTTP["url"] =~ "^/w/images/deleted(/|$)" {
    access.deny-all = "enable"
}

# Deny access to folders MediaWiki has a .htaccess deny in"
$HTTP["url"] =~ "^/w/(cache|languages|maintenance|serialized)(/|$)" {
    access.deny-all = "enable"
}

# Just in case, hide .svn and .git too
$HTTP["url"] =~ "/.(svn|git)(|$)" {
    access.deny-all = "enable"
}

# Hide any .htaccess files
$HTTP["url"] =~ "(^|/).ht" {
    access.deny-all = "enable"
}

# Uncomment the following code if you wish to hide the installer/updater
## Deny access to the installer
#$HTTP["url"] =~ "^/w/mw-config(/|$)" {
#   access.deny-all = "enable"
#}

Видя, что url.rewrite-once вверху - то же самое между исходной конфигурацией плаката, можно предположить, что проблема в следующем url.rewrite-if-not-file кусок:

url.rewrite-if-not-file = (
    "^/w/images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2",
    "^/w/images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2&archived=1",
)

Поэтому я бы рекомендовал просто установить начальный фрагмент кода для Lighted следующим образом:

url.rewrite-once = (
    "^/wiki(/|$)" => "/w/index.php",
    "^/$" => "/w/index.php",
)

И настройки для LocalSettings.php выглядят нормально как есть:

$wgScriptPath = "/w";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;

Если вы можете заставить это работать, добавьте другой access.deny-all вещи, чтобы заблокировать установку, и все должно быть в порядке.

Но помимо всего этого проблема может заключаться в том, что исходный путь плаката к статье не /wiki/ и относительный путь к index.php файл не /w/index.php. Это могло быть просто /index.php.

Да, это сбивает с толку… Но одни идеи помогают другим, пытающимся достичь этой цели.