]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn
comments (finally)
[ikiwiki.git] / doc / todo / want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn
index 969b17fa26aa4f1ff4004a14ddd3c7256307c500..4fafc2bbc249ac9e22869129f8702e0a6d54a5ba 100644 (file)
@@ -147,10 +147,12 @@ you don't like my approach:
 
 ----
 
-[[!template id=gitbranch branch=smcv/localurl author="[[smcv]]"]]
+[[!template id=gitbranch branch=smcv/ready/localurl author="[[smcv]]"]]
+[[!tag patch]]
 
 OK, here's an alternative approach, closer in spirit to what was initially
-requested. I haven't tested this on a full website with the CGI yet.
+requested. I included a regression test for `urlto`, `baseurl` and `cgiurl`,
+now that they have slightly more complex behaviour.
 
 The idea is that in the common case, the CGI and the pages will reside on the
 same server, so they can use "semi-absolute" URLs (`/ikiwiki.cgi`, `/style.css`,
@@ -169,10 +171,26 @@ suppot that.
 fully relative nor fully absolute, and there doesn't seem to be a good name
 for them...
 
+I've tested this on a demo website with the CGI enabled, and it seems to
+work nicely (there might be bugs in some plugins, I didn't try all of them).
+The `$config{url}` and `$config{cgiurl}` are both HTTP, but if I enable
+`httpauth`, set `cgiauthurl` to a HTTPS version of the same site and log
+in via that, links all end up in the HTTPS version.
+
 New API added by this branch:
 
 * `urlto(x, y, 'local')` uses `$local_url` instead of `$config{url}`
 
+  > Yikes. I see why you wanted to keep it to 3 parameters (4 is too many,
+  > and po overrides it), but I dislike overloading the third parameter
+  > like that.
+  > 
+  > There are fairly few calls to `urlto($foo, $bar)`, so why not
+  > make that always return the semi-local url form, and leave the third
+  > parameter for the cases that need a true fully-qualified url.
+  > The new form for local urls will typically be only a little bit longer,
+  > except in the unusual case where the cgiurl is elsewhere. --[[Joey]]
+
 * `IkiWiki::baseurl` has a new second argument which works like the
   third argument of `urlto`
 
@@ -185,14 +203,19 @@ Bugs:
 
 * I don't think anything except `openid` calls `cgiurl` without also
   passing in `local_cgiurl => 1`, so perhaps that should be the default;
-  `openid` uses `cgiurl` anyway, so there doesn't even necessarily need
-  to be a way to force absolute URLs? Any other module that really needs
-  an absolute URL could use `cgiurl(cgiurl => $config{cgiurl}, ...)`,
+  `openid` uses the `cgiurl` named parameter anyway, so there doesn't even
+  necessarily need to be a way to force absolute URLs? Any other module
+  that really needs an absolute URL could use
+  `cgiurl(cgiurl => $config{cgiurl}, ...)`,
   although that does look a bit strange
 
+  > I agree that makes sense. --[[Joey]]
+
 * It occurs to me that `IkiWiki::cgiurl` could probably benefit from being
   exported? Perhaps also `IkiWiki::baseurl`?
 
+  > Possibly, see [[firm_up_plugin_interface]]. --[[Joey]] 
+
 * Or, to reduce use of the unexported `baseurl` function, it might make
   sense to give `urlto` a special case that references the root of the wiki,
   with a trailing slash ready to append stuff: perhaps `urlto('/')`,
@@ -201,3 +224,6 @@ Bugs:
         do_something(baseurl => urlto('/', undef, local)`);
         do_something_else(urlto('/').'style.css');
         IkiWiki::redirect(urlto('/', undef, 1));
+
+  > AFACIS, `baseurl` is only called in 3 places so I don't think that's
+  > needed. --[[Joey]]