AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 402935
Accepted
William
William
Asked: 2012-06-28 20:12:42 +0800 CST2012-06-28 20:12:42 +0800 CST 2012-06-28 20:12:42 +0800 CST

mediawiki 的 nginx 短 url

  • 772

我正在尝试为 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 nginx mediawiki
  • 1 1 个回答
  • 2831 Views

1 个回答

  • Voted
  1. Best Answer
    Shane Madden
    2012-06-28T22:16:23+08:002012-06-28T22:16:23+08:00

    这是他们那里的一种非常有趣的表达方式。他们关于短 URL 的主要手册页是这样说的:

    这些指南很旧,几乎完全是错误的建议。

    不管怎样,让我们​​看看能不能稍微简化一下。

    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。

    • 2

相关问题

  • Sane Sharepoint 2007 网址

  • IIS 7 中的 URL 重写

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 如何将 URL 添加到 wiki (MediaWiki) 支持的文档?

  • 如何强制我的网址始终以 www 开头?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve