# Example configuration file for urlnormalizer-protocol
#
# URL's of hosts listed in the configuration are normalized to the target
# protocol. Useful in cases where a host accepts both http and https, doubling
# the site's size.
#
# Also all hosts of a domain can be addressed by adding a "host" pattern
# starting with "*.". E.g., "*.wikipedia.org" will match all subdomains of
# the domain "wikipedia.org"
#
# Note: if the URL includes a port number, the protocol is left unchanged.
#
# format: <host>\t<protocol>\n

example.org	http
example.net	http

example.io	https
example.nl	https

*.example.com	https

# invalid input to verify whether this is handled nicely by the configuration file reader
# no host/domain
	https
# no protocol
invalid-rule1.example.top
# more than two fields (skip rule)
invalid-rule2.example.top	https	http
# invalid protocol, not following RFC 1630 (skip rule)
invalid-rule3.example.top	@mail
