无法获得Mediawiki .htaccess短网址:

时间:2013-09-16 13:50:19

标签: .htaccess mod-rewrite rewrite mediawiki

我的mediawiki设置如下:

mysite.com/w/

我正在尝试按照手册中的建议添加短网址方法:

https://www.mediawiki.org/wiki/Manual:Short_URL/Apache

我使用redwerks工具生成.htaccess重写规则:

http://shorturls.redwerks.org/

虽然我使用root访问权限访问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";

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

在上面之后,重定向排序工作。这意味着,如果我访问mysite.com/w/index.php/Page_Title,它会重定向到mysite.com/wiki/Page_Title。但以下不起作用:

1)当我输入mysite.com/wiki时,它找不到页面,并且不会像我在输入mysite.com/w/时那样自动进入主页面。那么我需要为此添加一个单独的重写规则吗?

2)我还收到了一个找不到的页面,当它的网址如下所示时,它会创建一个新的文章页面:mysite.com/wiki/index.php。在这种情况下,它正在尝试创建一个index.php文章,而不是将我引导到Main Page。

3)即使上述规则开启,当我到达主要文章页面以外的页面时,例如编辑页面或查看历史记录等。它仍然显示网址为mysite.com/w/index ?.PHP标题= XYZ和放大器;行动=编辑。为什么它不将所有网址转换为维基?

4)如果网址添加了?标题,则不会重定向到维基。例如,此页面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。但其他网址类型仍然相同,不会被重写。当我检查mediawiki网站时,即使在编辑页面等时,他们的所有网址都被重写为/ wiki /而没有index.php。我怎样才能获得相同的结果?

1 个答案:

答案 0 :(得分:2)

好的,在网上进一步搜索后,这就是我发现的。

  

即使上述规则开启,当我到达除了以外的页面时   主要文章页面,如编辑页面或查看历史记录等。它仍然   将网址显示为mysite.com/w/index.php?title=XYZ&action=edit。为什么   它不会将所有网址转换为维基吗?

这是它应该如何工作的。所以这意味着主页面,命名空间页面和特殊页面将有这个简短的URL,而其他页面,如编辑页面,历史记录等...仍将显示w / index.php /......

  

如果网址添加了?标题,则不会重定向到维基。   例如,这个页面mysite.com/w/index.php?title=Main Page,确实如此   不要成为mysite.com/wiki/Main_Page

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

  

所以基本上重写规则并不能完全重写所有页面。它   只删除index.php /重写主文章页面网址   从网址和更改W到维基。但其他网址类型仍然存在   同样的,不会被重写。

我后来发现那就是它应该如何运作。

我还没有找到1和2的答案。我想我需要为此添加一个单独的重定向规则。我已经问了一个单独的问题,找到了htaccess重写规则:How to redirect Mediawiki Short URL with no title to Main Page?

一旦我得到了答案,我会更新这个主题..

<强>更新

对于否:1,我只需要在其他重写规则之前将重写规则移到顶部,之后它就会起作用。更多信息:How to redirect Mediawiki Short URL with no title to Main Page?

对于否:2:wiki / index.php不会被重定向到wiki / Main_Page,因为它会将index.php视为新文章。它只会将w / index.php重定向到/ wiki / Main_Page

相关问题