404尝试使用Lighttpd缩短MediaWiki的URL

我对此绝对陌生,所以请耐心等待。 我在Lighttpd上安装了MediaWiki,没有任何问题,除了当我尝试跟踪redwerks关于如何缩短Lighttpd上MediaWiki的url时,我总是感到非常沮丧。这就是我所做的:

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; 

帮助是如此赞赏,我可能会很快开始哭泣。

无哭的方法是使用Redwerks的超级configuration生成器 。

注意:这个答案的尝试也是失败的。 它根本不起作用。 关于这个确切主题的官方MediaWiki页面陈述如下:

警告:此短url页面包含有关如何configuration服务器的错误build议,这可能会导致您的wiki上的某些页面无法正常工作,并且/或者可能会在升级时引起问题。

它继续使用Redworks生成器的build议,但似乎仍然没有工作。 此外,官方的MediaWiki页面发送混合的消息, 可能工作。 我确实在$wgUsePathInfo上find了这个页面,它说明了这个有趣的内容:

注意:在CGI模式下设置PHP时,这些常常会中断。 如果设置了cgi.fix_pathinfo,PATH_INFO可能是正确的,但是可能不会; 在不区分大小写的文件系统的系统上,lighttpd会将传入的path数据转换为小写,并且也有关于Apache的问题的报告。 为了安全起见,我们将在这些情况下继续保持closures状态。

还没有testing这个cgi.fix_pathinfo想法,但张贴在这里作为参考。 如果有人可以发表一个规范的答案,请继续这样做! 随时根据需要复制我的答案! 只是不知何故,让我们这样解决这个mishegas。

其余的答案,这似乎并没有工作,如下所示。


Tgr发布的答案非常好,但是如果您通过其发光版本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在原始海报的configuration之间是相同的,可以假设问题是这个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", ) 

所以我会build议简单地设置像这样点亮的代码的初始块:

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

LocalSettings.php的设置看起来很好:

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

如果你能得到这个工作,然后添加其他access.deny-all东西locking安装下来,你应该很好去。

但是,过去的任何一个,问题可能是原来的海报path不是/wiki/ /w/index.php文件的相对path不是/w/index.php 。 这可能只是/index.php

是的,这是令人困惑的……但有一些想法来帮助别人试图实现这个目标。