Jump to content

扩展:UrlShortener

From mediawiki.org
This page is a translated version of the page Extension:UrlShortener and the translation is 100% complete.
MediaWiki扩展手册
UrlShortener
发行状态: 稳定版
实现 特殊页面 , API , MyWiki
描述 提供基本网址缩短服务
作者 YuviPanda留言
最新版本 持续更新
MediaWiki 1.25+
PHP 5.4+
数据库更改
虚拟域 virtual-urlshortener
  • $wgUrlShortenerLegacyTemplate
  • $wgUrlShortenerAllowArbitraryPorts
  • $wgUrlShortenerAllowedDomains
  • $wgUrlShortenerEnableQrCode
  • $wgUrlShortenerQrCodeShortenLimit
  • $wgUrlShortenerUrlSizeLimit
  • $wgUrlShortenerServer
  • $wgUrlShortenerEnableSidebar
  • $wgUrlShortenerIdMapping
  • $wgUrlShortenerAltPrefix
  • $wgUrlShortenerApprovedDomains
  • $wgUrlShortenerTemplate
  • $wgUrlShortenerReadOnly
  • $wgUrlShortenerIdSet
  • urlshortener-manage-url
  • urlshortener-create-url
  • urlshortener-view-log
许可证 Apache License 2.0
下載
帮助 Help:Extension:UrlShortener/zh
前往translatewiki.net翻譯UrlShortener扩展
問題 开启的任务 · 报告错误

URL缩短器(UrlShortener)扩展以MediaWiki扩展的形式提供基本的URL缩短服务。 要使其正常运行,需要对您的Web服务器配置进行一些更改。 它最初是为了实现URL缩短器提案而设计的。

有关在维基媒体项目上使用UrlShortener的说明,请参阅m:维基媒体URL缩短服务中的信息。

安装

  • 下载文件,并解压UrlShortener文件夹到extensions/目录中。
    开发者和代码贡献人员应改从Git安装此扩展,输入:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/UrlShortener
    
  • 請新增下列代码到您的LocalSettings.php 文件的底部:
    wfLoadExtension( 'UrlShortener' );
    
  • 請运行更新脚本,它将自动创建此扩展所必须的数据库表。
  • 按需求配置。
  • 按要求更改。
  • Yes 完成 – 請导航至您的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/22222222whttps://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 - 见上文。