[[!comment format=mdwn
 username="http://smcv.pseudorandom.co.uk/"
 nickname="smcv"
 subject="comment 1"
 date="2012-11-05T11:27:02Z"
 content="""
IkiWiki generates self-referential URLs using the `url` and `cgiurl`
configuration parameters, and the `urlto()` and `cgiurl()` functions;
the code you quoted isn't involved (it's choosing whether to set
HTTPS-only cookies or not, rather than choosing how to generate
self-referential URLs).

If you want your wiki to be accessible via both HTTP and HTTPS, and use
whichever the user first requested, you should set both `url` and
`cgiurl` to the same URI scheme and hostname with no port specified,
either both `http` or both `https`, for instance:

    url: http://www.example.com/
    cgiurl: http://www.example.com/ikiwiki.cgi

or

    url: https://example.org/wiki/
    cgiurl: https://example.org/cgi-bin/ikiwiki

(or the Perl-syntax equivalents if you're not using a YAML
setup file).

If you use one of those, IkiWiki will attempt to generate
path-only links, like \"/wiki/\" and \"/cgi-bin/ikiwiki?...\",
whenever it's valid to do so. A visitor using HTTP will stay
on HTTP and a visitor using HTTPS will stay on HTTPS.

The choice of `http` or `https` for the `url` and `cgiurl`
still matters when a URL *must* be absolute, such as in an
RSS feed.

I improved this code in late 2010 for this todo item:
[[todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both]].
It's possible that it has regressed (that's happened
a couple of times). If it has, please quote your exact
`url` and `cgiurl` configuration.
"""]]
