Jump to content

Manual:$wgUrlProtocols

From mediawiki.org
Parser: $wgUrlProtocols
Defines the protocols which are supported and translated in HTML by the mediawiki parser.
Introduced in version:1.5.0 (r10229)
Removed in version:Still in use
Allowed values:(array of strings) (1.6+)
(string containing a regular expression) (1.5)
Default value:see below

Details

Defines the URL protocols that MediaWiki will recognize as valid in UrlUtils::parse(). This is used in lots of places. The most visible effect is it determines what protocols are allowed for external links: unrecognized protocols are ignored, no link is generated. However, it's used in many other places too, including the code for Special:LinkSearch, and utility functions like UrlUtils::parse() that are used in a wide variety of different places.

These examples would not work (because "test://" is not defined as a valid protocol):

  • test://www.example.com
  • [test://www.example.com]
  • [test://www.example.com link text]
  • Some browsers, like Mozilla Firefox, will not follow file URLs on pages that have been loaded via HTTP. This is a security measure. See this mozillaZine article for more information, including some hints on how to overcome this restriction.
  • Most browsers do not support "remote file" URLs like file://host/share (only Internet Explorer handles these per default. For Firefox, a plugin is required or use exactly 5 slashes like file://///host/share, see [1])
Warning Warning: In MediaWiki 1.20.2+, adding "file:" without trailing slashes to $wgUrlProtocols will break image embedding using the [[File:Image.jpg]] syntax. This is a known bug related to a change that made URL protocol matching case-insensitive. As a workaround, use "file://" instead of "file:" as shown below.

To allow links to local files (which may make sense in an intranet context), put this into your LocalSettings.php :

$wgUrlProtocols[] = "file://";

Usually you only want to add protocols to this array.

Default values

MediaWiki version:
1.38
Gerrit change 876412
MediaWiki version:
1.35
Gerrit change 876392
$wgUrlProtocols = [
	'bitcoin:', 'ftp://', 'ftps://', 'geo:', 'git://', 'gopher://', 'http://',
	'https://', 'irc://', 'ircs://', 'magnet:', 'mailto:', 'matrix:', 'mms://',
	'news:', 'nntp://', 'redis://', 'sftp://', 'sip:', 'sips:', 'sms:',
	'ssh://', 'svn://', 'tel:', 'telnet://', 'urn:', 'worldwind://', 'xmpp:',
	'//',
];
MediaWiki versions:
1.24 – 1.37
$wgUrlProtocols = [
	'bitcoin:', 'ftp://', 'ftps://', 'geo:', 'git://', 'gopher://', 'http://',
	'https://', 'irc://', 'ircs://', 'magnet:', 'mailto:', 'mms://', 'news:',
	'nntp://', 'redis://', 'sftp://', 'sip:', 'sips:', 'sms:', 'ssh://',
	'svn://', 'tel:', 'telnet://', 'urn:', 'worldwind://', 'xmpp:','slack://', '//', 
];
MediaWiki versions:
1.22 – 1.23
$wgUrlProtocols = array(
	'http://',
	'https://',
	'ftp://',
	'ftps://', // If we allow ftp:// we should allow the secure version.
	'ssh://',
	'sftp://', // SFTP > FTP
	'irc://',
	'ircs://', // @bug 28503
	'xmpp:', // Another open communication protocol
	'sip:',
	'sips:',
	'gopher://',
	'telnet://', // Well if we're going to support the above.. -ævar
	'nntp://', // @bug 3808 RFC 1738
	'worldwind://',
	'mailto:',
	'tel:', // If we can make emails linkable, why not phone numbers?
	'sms:', // Likewise this is standardized too
	'news:',
	'svn://',
	'git://',
	'mms://',
	'bitcoin:', // Even registerProtocolHandler whitelists this along with mailto:
	'magnet:', // No reason to reject torrents over magnet: when they're allowed over http://
	'urn:', // Allow URNs to be used in Microdata/RDFa <link ... href="urn:...">s
	'geo:', // urls define geo locations, they're useful in Microdata/RDFa and for coordinates
	'//', // for protocol-relative URLs
);
MediaWiki versions:
1.18 – 1.21
$wgUrlProtocols = array(
	'http://',
	'https://',
	'ftp://',
	'irc://',
	'ircs://', // @bug 28503
	'gopher://',
	'telnet://', // Well if we're going to support the above.. -ævar
	'nntp://', // @bug 3808 RFC 1738
	'worldwind://',
	'mailto:',
	'news:',
	'svn://',
	'git://',
	'mms://',
	'//', // for protocol-relative URLs
);
MediaWiki version:
1.17
$wgUrlProtocols = array(
	'http://',
	'https://',
	'ftp://',
	'irc://',
	'gopher://',
	'telnet://', // Well if we're going to support the above.. -ævar
	'nntp://', // @bug 3808 RFC 1738
	'worldwind://',
	'mailto:',
	'news:',
	'svn://',
	'git://',
	'mms://',
);
MediaWiki versions:
1.15 – 1.16
$wgUrlProtocols = array(
	'http://',
	'https://',
	'ftp://',
	'irc://',
	'gopher://',
	'telnet://', // Well if we're going to support the above.. -ævar
	'nntp://', // @bug 3808 RFC 1738
	'worldwind://',
	'mailto:',
	'news:',
	'svn://',
);
MediaWiki versions:
1.6 – 1.14
$wgUrlProtocols = array(
	'http://',
	'https://',
	'ftp://',
	'irc://',
	'gopher://',
	'telnet://', // Well if we're going to support the above.. -ævar
	'nntp://', // @bug 3808 RFC 1738
	'worldwind://',
	'mailto:',
	'news:'
);
MediaWiki version:
1.5
$wgUrlProtocols = 'http:\/\/|https:\/\/|ftp:\/\/|irc:\/\/|gopher:\/\/|news:|mailto:';

Advanced modification

The default protocols should all be safe to click on (no evil side effects), and removing a protocol from the list will cause URLs using those protocols to become unrecognized in many places throughout the software. In particular, removing 'http://' or other common protocols will probably break huge amounts of stuff. Nevertheless, if you need to do so (for example, you already have a News: namespace), you can do something like this:

$wgUrlProtocols = array_diff($wgUrlProtocols, array('news:'));

See also