git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: "José María Escartín Esteban" <ripero84@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: Static gitweb content when using pathinfo
Date: Thu, 5 Apr 2012 23:14:09 +0200	[thread overview]
Message-ID: <201204052314.10606.jnareb@gmail.com> (raw)
In-Reply-To: <4F7DA413.2020502@gmail.com>

On Thu, 5 Apr 2012, José María Escartín Esteban wrote:
> Hi,
> 
> I'm running gitweb in a server.example.com/gitweb/ scenario.  If I don't enable
> pathinfo everything works fine, but when I enable pathinfo the static content
> stops showing up in the browser.
> 
> I'm not an HTML or perl expert, but I think that this may be due to a missing
> slash in the construction of the base tag:  Using the upstream script I am getting
> 
> <base href="http://server.example.com/gitweb" />
> 
> and no static content.  Once I tune the script to add a final slash to the url
> 
> <base href="http://server.example.com/gitweb/" />
> 
> the static content shows up again.
> 
> Maybe I'm doing something wrong (am I?), and possibly this can be solved from
> the web server side, but maybe it also makes some sense to include in the script
> some check that the url used in the base tag ends with a slash.  In that case,
> given my lack of perl skills, I would be really grateful if somebody implemented it.

How do you deploy gitweb, what is your web server configuration, and
what is the URL of main gitweb page (using placeholders like 'example.com'
or 'foo')?

When I am running gitweb, it uses http://localhost/cgi-bin/gitweb/gitweb.cgi
URL, and BASE element for path_info is

  <base href="http://localhost/cgi-bin/gitweb/gitweb.cgi" />

Note that last component of 'href' attribute of base element is the
basename of script, which according to HTML 4.01[1] and RFC 3986[2]
is removed[3]

   o  return a string consisting of the reference's path component
      appended to all but the last segment of the base URI's path (i.e.,
      excluding any characters after the right-most "/" in the base URI
      path, or excluding the entire base URI path if it does not contain
      any "/" characters).


There might be problem if you configured your web server to serve gitweb
using it as a handler for subdirectory, so the script name does not need
to appear in URL, e.g.

  http://localhost/cgi-bin/gitweb

which would require the following base element

  <base href="http://localhost/cgi-bin/gitweb/" />

Gitweb would have to distinguish those two cases somehow, and either add
or not add trailing slash '/'.

[1]: http://www.w3.org/TR/html401/struct/links.html#h-12.4
[2]: http://tools.ietf.org/html/rfc3986#section-5.2
[3]: http://tools.ietf.org/html/rfc3986#section-5.2.3

> Once I tune the script to add a final slash to the url
> 
> <base href="http://server.example.com/gitweb/" />
> 
> the static content shows up again.

By "tune the script" do you mean editing gitweb.cgi, or adding setting
$base_url to gitweb configuration file, see gitweb.conf(5):

  $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  <base href="$base_url"> only for URLs with nonempty PATH_INFO.
     Usually gitweb sets its value correctly, and there is no need to set
     this  variable,  e.g.  to $my_uri or "/". See $per_request_config if
     you need to override it anyway.

You can e.g. put

  $base_url .= '/' unless ($base_url =~ m!/$!);

in the gitweb configuration file to ensure that it ends with '/', whatever
it is.

HTH
-- 
Jakub Narebski
Poland

  reply	other threads:[~2012-04-05 21:14 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-05 13:54 Static gitweb content when using pathinfo José María Escartín Esteban
2012-04-05 21:14 ` Jakub Narebski [this message]
2012-04-14 17:19   ` Jakub Narebski
2012-04-16 15:18     ` José María Escartín Esteban
2012-04-17 12:30       ` Jakub Narebski
2012-04-24  7:01         ` José María Escartín Esteban

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201204052314.10606.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=ripero84@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).