尝试使用 Lighttpd 缩短 MediaWiki 的 URL 时出现 404

尝试使用 Lighttpd 缩短 MediaWiki 的 URL 时出现 404

我对此完全陌生,所以请耐心等待。我在 Lighttpd 上安装了 MediaWiki,没有任何问题,只是当我尝试按照 redwerks 的说明在 Lighttpd 上缩短 MediaWiki 的 URL 时,我总是得到非常令人沮丧的 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;

非常感谢您的帮助,我可能很快就会哭了。

答案1

无哭法是使用 Redwerks 的精湛配置生成器

答案2

笔记:这次尝试回答也是失败了;它根本不起作用。关于此主题的官方 MediaWiki 页面声明如下:

警告:此短网址页面包含有关如何配置服务器的错误建议,这可能会导致 wiki 上的某些页面无法正常工作和/或在升级时给您带来问题。

它继续建议使用 Redworks 生成器,但这似乎仍然不起作用。此外,官方 MediaWiki 页面对什么发出了混杂的信息可能工作。我确实发现此页面$wgUsePathInfo其中有一条有趣的趣闻:

笔记:当 PHP 设置为 CGI 模式时,这些功能经常会中断。如果设置了 cgi.fix_pathinfo,PATH_INFO 可能是正确的,但也可能不正确;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

是的,这很令人困惑......但有些想法可以帮助其他人尝试实现这一目标。

相关内容