手册:短链接

From mediawiki.org
This page is a translated version of the page Manual:Short URL and the translation is 93% complete.
本文是关于URL结构的。 有关为文章创建简短的网址,请参阅 扩展:短网址 。 有关创建网址缩短服务,请参阅 Extension:UrlShortener

短URLURL重写会隐藏页面地址中的php文件扩展名。 在开始之前,请花几分钟时间为您的网站设计一个稳定的URL结构,以减少以后出现的问题。

简介

目标

MediaWiki的默认安装路径如下所示:

/var/www/html/mediawiki (用Root账户安装)
/home/johndoe/public_html/mediawiki (虚拟主机安装)

MediaWiki的默认页面地址一般是下面这样:

https://example.org/w/index.php/Page_title (MediaWiki的最新版本,无CGI支持)
https://example.org/w/index.php?title=Page_title (MediaWiki的最新版本,有CGI支持)

使用下面将提到的方法, 我们可以把地址设置成下面的样子:

https://example.org/wiki/Page_title 这是最常见的配置,维基百科就是这样,但是不是默认就是这样的,因为它需要服务端的修改。
https://example.org/view/Page_title
https://wiki.example.org/view/Page_title
https://example.org/Page_title
https://wiki.example.org/Page_title

Some people do not recommend the last two configurations: see Manual:Wiki in site root directory for potential problems and solutions.

优势与劣势

  • 优势:缩短URL会对终端用户隐藏大部分技术细节,这对大部分站点拥有者都是有用的。除此之外,这还意味着当底层软件变动时可以保持url的稳定性。 (请参阅上文,了解MediaWiki的默认URL结构与CGI启用和不启用之间的区别)。 对访问者来说,他们也更易于记忆并且让访问者更方便的根据URL进行导航。 此外,短URL提供优于搜索引擎优化的默认URL的优势,因为在计算页面排名时,搜索引擎可以不利地处理包含?的URL。
  • 劣势:需要配置,因此,根据您使用的托管环境,可能很难重新创建。 但是,由于每个广泛使用的Web服务器都能够配置为使用短URL,因此大多数付费Web托管服务都应支持此功能。任何不提供此功能的主机都不值得你花钱。

指导

我们为不同Web服务器配置短URL的官方指南。 从此列表中选择您的Web服务器配置。 如果你不知道你正在使用什么服务器软件,那么它很可能是Apache。

其他教学指导

这些指南很旧,几乎是完全不好的建议。 这些将最终逐个删除,因为上面的官方指南是为不同的Web服务器创建的。

欢迎任何人创建一个操作方法解决方案页面并在下面列出。 请为页面使用合理的名称,该名称适合以下名称。 当每个独特的解决方案都有自己的页面时,读者可以跳过他们不想要的复杂性。 保持简单、可读、简短,每个单独的解决方案都有一个单独的页面。

为了帮助其他人找出真正有效的短网址方法,在尝试每种方法后,请编辑该页面并增加该指南的“工作”或“未工作”数字,并对内容做出简短(或长期,您的选择)描述 单击您的号码上的链接出错了。

URL示例——example.com/wiki/Page_title

编辑、查看历史记录等操作的链接中仍将带有index.php,除非定义$wgActionPaths

根访问

这些方法要求您访问服务器配置。 如果您是共享主机,则很可能不会。 在这种情况下,您将需要使用一种需要"无根访问"的方法。 您可以直接跳转到 MediaWiki 短网址构建器工具,并按照屏幕上的说明操作。 输入您的维基URL后选择"我没有根访问权限"。

(有关Apache的指南,请参阅 Guides中的链接指南部分)。

URL示例——example.com/Page_title

Some people do not recommend this configuration. See Manual:Wiki in site root directory for potential problems and solutions.

如何创建example.com/Page_title URL:

URL示例——wiki.example.com/Page_title

Some people do not recommend this configuration. See Manual:Wiki in site root directory for potential problems and solutions.

如何创建wiki.example.com/Page_title URL。

故障排除

与符号(&)问题

当您有带有符号的页面标题(如#、?、#、+和/)时,就会出现符号问题,尽管链接中正确编码,但从mod_rewrite到脚本的传递并不正确。 这表现在“404 页未找到”的错误中,因为标题在特殊字符处被切断。 例如,单击指向“John & Maria's page”的链接会 404,因为 MediaWiki 在找一个名为“John ”的页面。

这是因为长格式名称中的 & 符号被视为 query string 分隔符,并且永远不会到达 PHP 运行环境。 这是由旧的和有问题的 mod_rewrite 错误引起的。[1]

解决方法:

此问题是由/index.php?title=$1 等重写规则的?title=$1 部分引起的,这是完全不必要且有害的。 MediaWiki 直接从 REQUEST_URI 解析路径,因此将所有内容重写到 /index.php。

清除缓存

如果您发现在 LocalSettings.php 里更改 $wgArticlePath 后在 mysite.com/wiki/Main_Page 上却没效果,这可能是由于 MediaWiki 根据之前的设置缓存了链接。

打开 mysite.com/wiki/Main_Page?action=purge 强制要求 MediaWiki 重建缓存的链接。

另外您也可以:

  1. 运行 MySQL 语句“TRUNCATE objectcache;”,或
  2. 确保 $wgCacheEpoch 已经更新(如果 $wgInvalidateCacheOnLocalSettingsChange 已启用,您所需要做的就只是改一下 LocalSettings.php 去让它刷新)

将您域名的访问者重定向至您的wiki

我们的短链接配置官方指南包括建议如何使用您的短链接配置将网站根目录指向您的维基。

譬如,我们的 Apache 指南推荐这样将网站根目录指向您的维基。

RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]

需要留意的是,我们并推荐直接以 HTTP 跳转到您的维基所在路径或首页。 直接跳转到首页会将您维基的页面设置的可变部分写死为您的服务器配置。 并且跳转到维基所在路径亦会导致有双重跳转。 而将根目录路径重写到 MediaWiki,它会自己以 301 跳转到首页。

如果使用 VirtualHosts,要将重写规则放入 VirtualHosts 声明中!

将wiki从/wiki移动至/w

新手常不小心就把 MediaWiki 本身(指源代码,而非短链接)直接安装在 /wiki 而不是 /w。 安装好之后,当尝试配置短链接时才发现出错。(由于虚拟路径和实际路径冲突,要配置短链接就变困难了)

虽然有关于移动维基的指南,但如果您只需要更改安装目录(并保持同一台服务器、同一个数据库和同一个主机名),那么这份指南可能就太复杂了。

而你需要做的事情有:

  • 备份 LocalSettings.php 以及其他您创建的配置文件(像是您的 .htaccess 文件)。
  • 将您服务器上 MediaWiki 的安装目录由 /wiki 改成 /w
  • LocalSettings.php 里的 $wgScriptPath 改成 "/w" 并移除(或注释)任何 $wgArticlePath 的定义。(这个变量在您设置短链接的时候会再修改)
  • 来到这一步,您的维基应该正常工作在 example.org/w
  • 然后通过常规指南设置短链接
  • 为保证设置都没问题,在您的维基上多加测试。 像是编辑一个页面,看几个不同的页面等等。 如果发现任何异常,可以恢复备份的 LocalSettings.php 和其他在配置短链接期间所更改的相关文件,将文件夹重新命名为 /wiki 来还原一切。

共享主机的用户要注意: 许多共享主机套餐都提供一个可以自动安装、更新和备份 MediaWiki 等软件的应用管理器。 如果您的套餐有这样的功能,并且您还想继续使用它,您应该联系技术支持,告知他们您刚刚手动更改了 MediaWiki 的安装目录。

技巧

参见

外部链接

參考資料

  1. Bugzilla mod_rewrite 用于 & 符号错误,部分用户已部分解决,但仅在 13 年后