我正在尝试为 MediaWiki 网站制作短网址。wiki 位于子目录mydir
( http://www.example.com/mywiki ) 中。我已经设置了重写,/etc/nginx/sites-available
以便 example.com 重定向到 example.com/mywiki。
当前的 URL 就像http://www.example.com/mywiki/index.php?title=Main_Page
. 我想清理网址,使其看起来像http://www.example.com/mywiki/Main_Page
. 这样做我遇到了很多麻烦。我不熟悉 nginx 配置文件使用的正则表达式或语法。
这就是我目前拥有的:
server_name example.com www.example.com;
location /
{
rewrite ^.+ /mywiki/ permanent;
}
location /wiki/
{
rewrite ^/mywiki/([^?]*)(?:\?(.*))? /mywiki/index.php?title=$1&$2 last;
}
第二次重写显然是被破坏的那个。它基于MediaWiki 文档中的Page title --nginx rewrite--root access。
当我尝试加载网站时,浏览器告诉我我得到了无限重定向。有谁知道我应该如何解决这个问题?或者更确切地说,实现这个的正确方法是什么,所有这些符号是什么意思?
这是他们那里的一种非常有趣的表达方式。他们关于短 URL 的主要手册页是这样说的:
不管怎样,让我们看看能不能稍微简化一下。
请注意,您不能覆盖“漂亮”路径(您已将其放入
location
块中,所以让我们使用它运行)和物理路径;规范是/wiki/
用作漂亮路径(您的$wgArticlePath
配置)和/w/
物理路径(您的$wgScriptPath
配置)。所以,总而言之,是这样的:
...并且您需要以某种形式进行 PHP 处理,如示例中所示,并
Settings.php
使用适当$wgScriptPath
的设置更新您的设置,并将$wgArticlePath
设置设置$wgUsePathInfo
为 true。