扩展:UrlShortener
发行状态: 稳定版 |
|
|---|---|
| 实现 | 特殊页面, API, MyWiki |
| 描述 | 提供基本网址缩短服务 |
| 作者 | YuviPanda留言 |
| 最新版本 | 持续更新 |
| MediaWiki | 1.25+ |
| PHP | 5.4+ |
| 数据库更改 | 是 |
| 虚拟域 | virtual-urlshortener |
|
|
|
|
| 许可证 | Apache License 2.0 |
| 下載 | |
| 帮助 | Help:Extension:UrlShortener/zh |
| 前往translatewiki.net翻譯UrlShortener扩展 | |
| 問題 | 开启的任务 · 报告错误 |
URL缩短器(UrlShortener)扩展以MediaWiki扩展的形式提供基本的URL缩短服务。 要使其正常运行,需要对您的Web服务器配置进行一些更改。 它最初是为了实现URL缩短器提案而设计的。
安装
- 下载文件,并解压
UrlShortener文件夹到extensions/目录中。
开发者和代码贡献人员应改从Git安装此扩展,输入:cd extensions/ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/UrlShortener
- 請新增下列代码到您的LocalSettings.php文件的底部:
wfLoadExtension( 'UrlShortener' );
- 請运行更新脚本,它将自动创建此扩展所必须的数据库表。
- 按需求配置。
- 按要求更改。
完成 – 請导航至您的wiki上的Special:Version,以验证此扩展已成功安装。
使用Vagrant安装:
- 如果你有使用Vagrant,请通过
vagrant roles enable urlshortener --provision安装
//example.com/r/foo正常工作,您需要为您的Web服务器设置重写规则。 适用于Apache的示例规则已在扩展内提供。
配置
LocalSettings.php
URL重定向配置:
配置生成短链接时要使用的模板。
使用此功能需要mod_rewrite(或等效模块)。
如果设置为false(默认值),则短链接将使用不太短的/wiki/Special:UrlRedirector/5234,因为无论Web服务器配置如何,它都能正常工作。
如果您希望短链接格式为example.com/r/5234,则需要进行如下设置:
$wgUrlShortenerTemplate = '/r/$1';
短域名:
如果您有自定义短域名,可用以下方法设置:
$wgUrlShortenerServer = "short.wiki";
如果设置为false(默认值),则将使用$wgServer。
全域数据库:
如果您希望为您的wiki农场使用一个中央数据库,请将其设置为数据库名称。
如果设置为false(默认值),它将使用wiki的普通数据库。
$wgVirtualDomainsMapping['virtual-urlshortener'] = [ 'db' => '<shared-db>' ]
允许任意端口:
默认情况下,只接受端口为80和443的URL,并会自动删除。
如果您的wiki使用的是自定义端口,请将其设置为true以允许缩短具有任意端口的URL。
$wgUrlShortenerAllowArbitraryPorts = true;
AllowedDomains正则表达式:
配置用户可提交链接的可接受域名。
此为一个正则表达式数组。
如果设置为false(默认值),则会为当前域设置允许列表(使用 $wgServer)。
$wgUrlShortenerAllowedDomains = false;
例如,要仅将指向wikipedia.org或wikimedia.org的链接加入白名单,我们可以使用以下代码:
$wgUrlShortenerAllowedDomains = array(
'(.*\.)?wikimedia\.org',
'(.*\.)?wikipedia\.org',
);
如果我们想允许任何域名:
$wgUrlShortenerAllowedDomains = array( '.*' );
ApprovedDomains文档:
这是一个被允许的域名数组,但采用人类可读的形式。 它将显示在Special:UrlShortener上。
如果设置为false(默认值),它将输出$wgServer的规范化版本。
$wgUrlShortenerApprovedDomains = false;
如果在上述示例中,您只允许访问wikipedia.org和wikimedia.org:
$wgUrlShortenerApprovedDomains = array(
'*.wikimedia.org',
'*.wikipedia.org',
);
短代码字符集:
如果您想自定义短代码使用的字符集,可以覆盖此设置。 此设置只应在设置过程中执行一次。 之后一旦更改,所有现有的短链接都将指向错误的目标地址。
$wgUrlShortenerIdSet = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz$';
上述字符串多年来一直是默认值,但由于某些社交媒体平台会从URL中删除$字符,因此可能会出现问题。
新安装的用户可能需要配置此项以排除$。
列表中的第一个字符将被视为前导零;不会创建以该字符开头的短代码,并且在URL中用作短代码的开头时将被忽略(例如,https://w.wiki/22222222w与 https://w.wiki/w相同)。
只读模式:
将$wgUrlShortenerReadOnly设置为true可阻止用户创建新的短链接。
这主要是此扩展在部署到维基媒体网站时的一种权宜之计,一旦不再需要就会被移除。
二维码:
| MediaWiki版本: | ≥ 1.41 |
从UrlShortener版本1.1.0开始,您可以启用二维码分享功能。 它有两个配置。 其中一个是启用二维码分享功能。
$wgUrlShortenerEnableQrCode = true;
请注意,目前如果您希望在侧边栏中显示“下载二维码”链接,则还必须设置$wgUrlShortenerEnableSidebar。
只有当二维码指向的链接过长时,才会将其缩短。 这是因为用户在扫描二维码时更倾向于看到熟悉的域名,但如果网址太长,二维码的像素密度就会导致其难以被扫描。 您可以控制URL的长度限制,当URL长度超过限制时,系统会先对其进行缩短,然后再生成二维码。 这里的数字指的是字节数,而不是字符数。
$wgUrlShortenerQrCodeShortenLimit = 200;
VirtualHost或.htaccess
要获得真正的短URL,您需要用mod_rewrite或类似的东西来设置重写规则。
扩展中包含一个示例,说明应该在您的.htaccess文件中放入什么内容。
如果我们的模板设置为/r/$1,那么我们可以使用:
RewriteEngine On
RewriteRule ^r/(.*)$ /w/index.php?title=Special:UrlRedirector/$1 [PT]
如果您使用的是nginx,则可以在server指令(directive)中添加以下内容。
location ~ ^/r/(.*) {
return 301 /w/index.php?title=Special:UrlRedirector/$1;
}
此示例假设您的$wgScriptPath设置的是/w。
备用网址
由于短链接最终会生成各种语言的脏话,因此还会创建一个以下划线_开头的备用短链接(参见T230685)。
为了避免显示此备用链接,您可以将wiki页面上的MediaWiki:Urlshortener-shortened-url-alt页面清空。
API
此扩展提供API模块 action=shortenurl,用于获取给定URL的缩短后URL,如果该URL尚不存在,则创建它。
您可以查看API文档以获取帮助。
url- 要缩短的URL。
响应:
{
"shortenurl": {
"shorturl": "http://127.0.0.1:8080/s/3"
}
}
特殊页面
- Special:UrlShortener - 将完整URL转换为短URL。
- Special:ManageShortUrls - 删除短URL或恢复已删除的短URL。
- Special:UrlRedirector - 如果使用短URL作为参数(如
Special:UrlRedirector/bb),则会重定向到真正的URL。 - Special:QrCode - 见上文。
| 此扩展用于一个或多个维基媒体项目。 这可能意味着扩展足够稳定、运作足够良好,可以用在这样的高流量的网站上。 请在维基媒体的CommonSettings.php和InitialiseSettings.php配置文件中查找此扩展的名称以查看哪些网站安装了该扩展。 特定wiki上的已安装的扩展的完整列表位于Special:Version页面。 |
| 此扩展在以下wiki农场/托管网站和/或软件包中提供: |
- Stable extensions/zh
- Special page extensions/zh
- API extensions/zh
- Personalization extensions/zh
- BeforePageDisplay extensions/zh
- LoadExtensionSchemaUpdates extensions/zh
- SidebarBeforeOutput extensions/zh
- SkinTemplateNavigation::Universal extensions/zh
- WebRequestPathInfoRouter extensions/zh
- Apache licensed extensions/zh
- Extensions in Wikimedia version control/zh
- All extensions/zh
- Extensions used on Wikimedia/zh
- Extensions included in Miraheze/zh
