nginx 短网址用于 mediawiki

nginx 短网址用于 mediawiki

我正在尝试为 MediaWiki 网站创建短 URL。该 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。我想清理 URL 以使其看起来像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;
}

第二次重写显然是有问题的。它基于页面标题--nginx rewrite--root 访问权限在 MediaWiki 文档中

当我尝试加载网站时,浏览器告诉我我得到了无限重定向。有人知道我应该如何解决这个问题吗?或者说,正确的实现方法是什么,所有这些符号是什么意思?

答案1

他们的表达方式非常有趣。他们的短网址手册主页上有这样一段话:

这些指南已经过时,而且几乎全是坏建议。

无论如何,让我们看看是否可以简化一点。

rewrite ^/wiki/([^\?]*) /mywiki/index.php?title=$1&$args last;

请注意,您不能覆盖“漂亮”路径(您已将其放入块中location,因此让我们使用它)和物理路径;规范是用作/wiki/漂亮路径(您的$wgArticlePath配置)和/w/物理路径(您的$wgScriptPath配置)。

总而言之,情况是这样的:

location / {
  rewrite ^/$ /wiki/ permanent;
}

location /wiki/ {
  rewrite ^/wiki/([^\?]*) /mywiki/index.php?title=$1&$args last;
}

...并且您将需要以某种形式进行 PHP 处理,正如他们在示例中所展示的那样,以及使用Settings.php适当的设置$wgScriptPath来更新您$wgArticlePath,以及将其设置$wgUsePathInfo为 true。

相关内容