我有这样的 mediawiki 设置:
mysite.com/w/
我正在尝试像这里的手册中建议的那样添加短 URL 方法:
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) 当 url 看起来像这样时,我还收到一个未找到的页面并创建一个新的文章页面:mysite.com/wiki/index.php。在这种情况下,它试图创建一个 index.php 文章,而不是将我引导到主页。
3) 即使开启了上述规则,当我到达主文章页面以外的页面时,例如编辑页面或查看历史记录等。它仍然显示 url 为 mysite.com/w/index.php?标题=XYZ&动作=编辑。为什么不将所有网址转换为 wiki?
4) 如果一个 url 添加了一个 ?title,它不会被重定向到 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。但是其他的urls类型还是一样的,没有重写。当我检查 mediawiki 网站时,即使在编辑页面等时,他们的所有 url 都被重写为 /wiki/ 而没有 index.php 等。我怎样才能得到相同的结果?