无法使Mediawiki.htaccess短URL正常工作:

无法使Mediawiki.htaccess短URL正常工作:,.htaccess,mod-rewrite,rewrite,mediawiki,.htaccess,Mod Rewrite,Rewrite,Mediawiki,我将mediawiki设置为: mysite.com/w/ 我正在尝试添加短URL方法,就像手册中建议的那样: https://www.mediawiki.org/wiki/Manual:Short_URL/Apache 我使用redwerks工具生成.htaccess重写规则: http://shorturls.redwerks.org/ 虽然我使用的是根访问的VPS,但我发现更改Apache配置和Nginx配置太复杂了,让我不知所措。所以我决定使用htaccess方法,但我无法让它完全

我将mediawiki设置为:

mysite.com/w/
我正在尝试添加短URL方法,就像手册中建议的那样:

https://www.mediawiki.org/wiki/Manual:Short_URL/Apache
我使用redwerks工具生成.htaccess重写规则:

http://shorturls.redwerks.org/
虽然我使用的是根访问的VPS,但我发现更改Apache配置和Nginx配置太复杂了,让我不知所措。所以我决定使用htaccess方法,但我无法让它完全工作。这是我在根路径中添加的.htaccess文件:

RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]
RewriteRule ^/?$ %{DOCUMENT_ROOT}/w/index.php [L]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^/?w/images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/w/thumb.php?f=$1&width=$2 [L,QSA,B]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^/?w/images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/w/thumb.php?f=$1&width=$2&archived=1 [L,QSA,B]
我将这些添加到LocalSettings.php中

## The URL base path to the directory containing the wiki;
## defaults for all runtime URL paths are based off of this.
## For more information on customizing the URLs please see:
## http://www.mediawiki.org/wiki/Manual:Short_URL
$wgScriptPath = "/w";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";

在完成上述操作之后,重定向类就可以正常工作了。也就是说,如果我转到mysite.com/w/index.php/Page_Title,它会重定向到mysite.com/wiki/Page_Title。但以下方法不起作用:

1) 当我键入mysite.com/wiki时,它找不到页面,也不会像我键入mysite.com/w/时那样自动转到主页。那么我是否需要为此添加单独的重写规则

2) 我还收到一个未找到的页面,当url看起来像:mysite.com/wiki/index.php时,它会创建一个新的文章页面。在本例中,它试图创建index.php文章,而不是将我引导到主页

3) 即使上面的规则是打开的,当我进入除主要文章页面以外的页面时,例如编辑页面或查看历史记录等。。它仍然将url显示为mysite.com/w/index.php?title=XYZ&action=edit。为什么它不把所有的URL都转换成wiki

4) 如果url添加了?标题,则不会重定向到wiki。例如,此页面mysite.com/w/index.php?title=Main page不会成为mysite.com/wiki/Main_page

看完上面的内容后,现在我在想是否最好将我的wiki安装到mysite.com/wiki/文件夹而不是“w”文件夹。事实上,我最初就是这样做的,但后来当我尝试实现短URL方法时改变了它,因为MW手册建议不要这样做。所以我需要一些关于如何解决这个问题的指导,请


这些只是到目前为止我注意到的一些问题。所以基本上重写规则并不能完全重写所有的页面。它仅通过从url中删除index.php/并将w更改为wiki来重写文章主页url。但其他URL类型仍然相同,不会被重写。当我查看mediawiki网站时,他们的所有URL都被重写为/wiki/而没有index.php,即使在编辑页面时也是如此。。我怎样才能得到同样的结果

好的,在网上进一步搜索后,我发现了这个

即使上面的规则是开着的,当我进入到除 主文章页面,如编辑页面或查看历史记录等。。还是 将url显示为mysite.com/w/index.php?title=XYZ&action=edit。为什么? 它不会将所有URL转换为wiki吗

这就是它的工作原理。这意味着主页面、名称空间页面和特殊页面将具有此短url,而其他页面(如编辑页面、历史记录等)将具有此短url。。仍将显示w/index.php/

如果url添加了?标题,则不会重定向到wiki。 例如,这个页面mysite.com/w/index.php?title=Main page,不需要 不成为mysite.com/wiki/Main_页面

它只重写了文章的URL,我不应该在重写中包含?title=$1或类似的内容。包含查询将导致重写MediaWiki的内置处理,并会因为Apache的查询重写被破坏而在wiki上创建错误。这里的目标是别名/index.php的路径,然后让MediaWiki自己根据LocalSettings.php中的配置来解析和路由url

所以基本上重写规则并不能完全重写所有的页面。信息技术 仅通过删除index.php重写文章主页url/ 从url并将w更改为wiki。但其他URL类型仍在使用中 相同和不被重写

后来我发现这就是它的工作原理

我还没有找到1和2的答案。我想我需要为此添加一个单独的重定向规则。我提出了一个单独的问题,以找到htaccess重写规则:

一旦我有了这些问题的答案,我就会更新这个话题

更新:

对于no:1,我只需要在其他重写规则之前将重写规则移到顶部,然后它就工作了。更多信息:

对于no:2:wiki/index.php,将不会重定向到wiki/Main_页面,因为它将把index.php作为一篇新文章来看待。它只会将w/index.php重定向到/wiki/Main_页面

## To enable image uploads, make sure the 'images' directory
## is writable, then set this to true:
$wgEnableUploads  = true;