Manual:Short URL/zh
短URL或URL重写会隐藏页面地址中的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
Root访问
这些方法要求您可以访问服务器配置。 如果您是在共享主机上,则很可能没有。 在这种情况下,您将需要使用一种需要“无root访问”的方法。 您可以直接跳转到MediaWiki短网址构建器工具,并按照屏幕上的说明操作。 输入您wiki的URL后选择“我没有root访问权限”。
- wiki/Page title -- Lighttpd rewrite--root access File:Face-smile.svgx3
- wiki/Page title -- Cherokee rewrite--root access File:Face-smile.svgx1
- IIS8.5 File:Face-smile.svgx2 File:Face-sad.svgx1
- Abyss
(有关Apache的指南,请参阅Guides中的链接指南部分)。
URL示例——example.com/Page_title
如何创建example.com/Page_title
URL:
- Page title - nginx, Root Access, PHP as a CGI module File:Face-smile.svgx6
- Page title -- Windows & Apache without 403 on Special Pages File:Face-smile.svgx3
URL示例——wiki.example.com/Page_title
如何创建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重建缓存的链接。
另外您也可以:
- 运行MySQL语句“TRUNCATE objectcache;”,或
- 确保
$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的安装目录。
技巧
参见
- CGI模块是什么的解释
- $wgUsePathInfo - 是否使用“漂亮的”URL的配置
- 将您的维基放在网站根目录的注意事项
- $wgActionPaths - 为编辑、编辑历史等动作使用“漂亮的”URL的配置项
- 清理URL RFC - 提出“用于编辑、预览皮肤等的更简洁的URL”。
外部链接
- Apache mod_rewrite 模块 - 动态重写请求 URL
- MediaWiki 短链接生成工具 - 比手册页的配置更可靠的自动生成短链接配置的工具。'
- URL as UI by Jakob Nielsen on the importance of persistent, usable URLs.
參考資料
- ↑ Bugzilla mod_rewrite 用于&符号错误,部分用户已部分解决,但仅在13年后