Jump to: navigation, search
Site customization: $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
string containing a regular expression before 1.6.0
Default value: (see below)
Other settings: Alphabetical | By function

Details[edit | edit source]

Defines the URL protocols that MediaWiki will recognize. 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 wfParseUrl() that are used in a wide variety of different places.

Some examples that don't work (because "test://" is not defined as a valid protocol):

  • test://
  • [test://]
  • [test:// link text]

Note Note: 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.

Note Note: 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.

Modification (MW 1.6+)[edit | edit source]

MediaWiki version: 1.6

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. 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:'));

The default value has changed in MediaWiki 1.6.0, before that version the following were not recognized by default:

  • telnet://
  • nntp://
  • worldwind://

The default value in MediaWiki 1.22.0 is

$wgUrlProtocols = array(
	'ftps://', // If we allow ftp:// we should allow the secure version.
	'sftp://', // SFTP > FTP
	'ircs://', // @bug 28503
	'xmpp:', // Another open communication protocol
	'telnet://', // Well if we're going to support the above.. -ævar
	'nntp://', // @bug 3808 RFC 1738
	'tel:', // If we can make emails linkable, why not phone numbers?
	'sms:', // Likewise this is standardized too
	'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

Modification (MW 1.5)[edit | edit source]

MediaWiki version: 1.5

In earlier versions the setting was a regexp expression which matched the beginning part of the URI; in other words, it is a set of prefixes separated by '|' (with '/' converted to '\/' because '/' has a special meaning in a regular expression.

$wgUrlProtocols = 'http:\/\/|https:\/\/|ftp:\/\/|irc:\/\/|gopher:\/\/|news:|mailto:';

This default value causes MediaWiki to render URIs with the following prefixes as external links:

  • http://
  • https://
  • ftp://
  • irc://
  • gopher://
  • news:
  • mailto:

Older versions[edit | edit source]

If you need this functionality in older versions, there is the function replaceExternalLinks in ./includes/Parser.php. Just add a line for your protocol there.

See also[edit | edit source]

Language: English  • français • 日本語 • 한국어