Emmanuel Blot wrote: > I'd like to resume this thread that has been forgotten, as I think the > "base url", python uri root and the like should be simplified before > 0.11 is delivered. > > The documentation may need to be updated so that > the base URL appears to be the single, unique location (base_url in > trac.ini). No more "UriRoot" option in Apache, for instance. > > Moreover, I'm not a big fan to hard code the base url in the trac.ini > file. At least, the "server" part of the URL. > > The rationale is that it prevents Trac from being served from several > server names, for example an installation with http://localhost, > http://a.b.c.c and http://server need to use three different Trac > engine to server the same environment, which is a bit overkill. This, > in turn, force the use of syslog for the error logger, if all the > messages are to be sent to the same file whatever the server name used > to access Trac. > > I understand though that Trac needs to know its own URL, for example > when a notification is triggered from a hook script, Trac needs to > know the URL and it can't get it from a web request. > > However, would it be possible to split the base_url option into the > server part (which is required for the notification) and the base path > part (which cannot be guessed right from the client requests, if I my > understanding is correct) ? > > Is the "server" part of base_url required for anything else than the > notification subsystem ? >
Yes, it's also required for redirects. Trac can't always guess the right protocol to be used, e.g. when running behind a proxy (#2253, #3207) or when using openssl (#3208, #comment:5 - workaround described in TracModPython#HTTPSissues) There are numerous duplicate tickets for this (#5454, #4532, #3207, #2697) but http://trac.edgewall.org/ticket/2553 is the reference. With http://trac.edgewall.org/changeset/5642, base_url is now used to override the URL reconstruction, though that's also not OK in all cases, as mentioned in the changeset, which hints at #5064. Hence my proposal for two distinct settings in http://trac.edgewall.org/ticket/5064#comment:2, which can be summarized like this: - *either* use base_url when you want to force the usage of an URL over URL reconstruction from the request - *or* use default_url when you only want to give a default URL for situations when you don't have a requests at hand (e.g. e-mail notifications). URL reconstruction will be done for redirects. Of course, if base_url is set, default_url doesn't need to be. If none is set, then URL reconstruction is used for redirects and (that was not in the proposal above) we could eventually set default_url from the request on first use, the way we did it for base_url before r4086. See also: - http://trac.edgewall.org/changeset/3298 - http://trac.edgewall.org/changeset/4086 In addition (I've just read Noah's mail) I agree that the base_url setting should preferably be done from a wsgi environment parameter, as its main usage is for redirects. On the other hand, default_url fits better in trac.ini - it shouldn't need to depend on the request. -- Christian > Thanks, > Manu > > > On 3/4/07, Christian Aust <[EMAIL PROTECTED]> wrote: > >> Hi Manu, >> >> Am 03.03.2007 um 16:04 schrieb Emmanuel Blot: >> >> >>> Anyway, would it make sense to add some sanity checks to validate that >>> at least one option that defines the base URL is set; the best option >>> would be to have a single option to define the base URL, whichever the >>> way Trac is run (tracd, mod_python, CGI, etc.). >>> >> True. I've had some issues regarding my GoogleSitemapPlugin and the >> use of different base urls, i.e. when people accessed the admin part >> of trac using https (but other pages are accessible without SSL) or >> when trac was accessed via a reverse proxy. >> >> http://trac-hacks.org/ticket/917 >> http://trac-hacks.org/ticket/919 >> http://trac-hacks.org/ticket/1009 >> >> >>> As a subsidiary question, what is the best way to retrieve the base >>> URL in a plugin (in Trac 0.11)? >>> >> Some days ago, Noah told me to use req.href() or req.abs_href() for >> this, but constructing the base URL from the current request is not >> always the best solution. Regards, >> >> - Christian >> >> >> > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Trac Development" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/trac-dev?hl=en -~----------~----~----~----~------~----~------~--~---
