Subject: Re: gitweb: false base href sent when integrated via reverse proxy and path_info is active

From: Jakub Narebski <[email-masked]>
Date: Sun, 28 Nov 2010 22:07:01 +0100

On Sun, 28 Nov 2010, Daniel Reichelt wrote:

>>> Lacking that, a plain
>>>
>>> our $base_url  = 'whatever';
>>>
>>> in the gitweb config should probably work
> 
> Nope again, I'm afraid it doesn't (see further down)

Strange, it works for me (see below). 
 
>> See also gitweb/README, the "Gitweb config file variables" section:
>> 
>>  * $base_url
>>    Base URL for relative URLs in pages generated by gitweb,
>>    (e.g. $logo, $favicon, @stylesheets if they are relative URLs),
>>    needed and used only for URLs with nonempty PATH_INFO via
>>    <base href="$base_url">.  Usually gitweb sets its value correctly,
>>                              ^^^^^^^
>>    and there is no need to set this variable, e.g. to $my_uri or "/".
>> 
>> The key word here is "usually" ;-)
>> 
> 
> *oops* thank you all for the hint! I totally missed that.
> 
> However, I just tried that and it failed. $base_url gets ignored in
> gitweb.conf and even setting $my_url and $my_uri in gitweb.conf seems to
> have no effect at all. For testing purposes I printed the relevant
> variables to the html header:
> 
> 
> gitweb.conf:
> ************

The default name of gitweb config file is gitweb_config.perl, not 
gitweb.conf.  Are you sure you are picking correct config file?

> our $feature{'pathinfo'}{'default'} = [1];
> our $base_url = "https://foobar";
> our $my_url = "https://foo";
> our $my_uri = "https://bar";

Try adding

  our $site_name = "foo";

to check if you are picking correct config file.

> - git summary of repo "test1"
> public url: https://sb74/projects/gitweb/test1/summary
> revProxy url: https://localhost:446/projects/gitweb/test1/summary
> ************
> <head>
> <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/>
> <meta name="generator" content="gitweb/1.7.2.3 git/1.7.2.3"/>
> <meta name="robots" content="index, nofollow"/>
> <title>localhost Git - test1/summary</title>
> <base href="https://sb74:446/projects/gitweb" />
[...]
> </head>

I get the following when running with config file that contains:

  our $version = "current";
  [...]
  our $site_name = "[localhost]";
  [...]
  our $base_url = "https://localhost/gitweb/";

$ gitweb-run.sh "" "/git.git"
  [...]
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  <meta name="generator" content="gitweb/current git/1.7.3.2.171.g8ccd7"/>
  <meta name="robots" content="index, nofollow"/>
  <title>[localhost] - git.git/summary</title>
  <base href="https://localhost/gitweb/" />
  [...]

So it works for me.
-- 
Jakub Narebski
Poland