# [PATCH] gitweb: fix base url set if PATH_INFO is used, add a / at the end.

2 messages from 2023-02-03 to 2023-02-06. Participants: Daniel Abrecht, Junio C Hamano.
Thread: https://gitlist.dev/t/59192

## Daniel Abrecht, 2023-02-03 21:42

Subject: [PATCH] gitweb: fix base url set if PATH_INFO is used, add a / at the end.
Message-ID: <585496b18c853140144c3e7ae13c0124@abrecht.li>
URL: https://gitlist.dev/e/585496b18c853140144c3e7ae13c0124%40abrecht.li

```
In HTML, if there is a base tag like `<base href="/a/b">`,
a relative URL like `c/d` will be resolved by the browser as
`a/c/d` and not as `a/b/c/d`. But with a base tag like
`<base href="/a/b/">` it will result in `a/b/c/d`. So by
adding a slash there, the browser should now search the
files at the correct location.

Signed-off-by: Daniel Abrecht <public@danielabrecht.ch>
---
  gitweb/gitweb.perl | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index e66eb3d9ba..acb2cce5f6 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -4217,7 +4217,7 @@ sub git_header_html {
  	# the stylesheet, favicon etc urls won't work correctly with path_info
  	# unless we set the appropriate base URL
  	if ($ENV{'PATH_INFO'}) {
-		print "<base href=\"".esc_url($base_url)."\" />\n";
+		print "<base href=\"".esc_url($base_url)."/\" />\n";
  	}
  	print_header_links($status);

-- 
2.39.0


```

## Junio C Hamano, 2023-02-06 22:02

Subject: Re: [PATCH] gitweb: fix base url set if PATH_INFO is used, add a / at the end.
Message-ID: <xmqqsffi4fmm.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqsffi4fmm.fsf%40gitster.g
In-Reply-To: <585496b18c853140144c3e7ae13c0124@abrecht.li>

```
Daniel Abrecht <git-git@nodmarc.danielabrecht.ch> writes:

> In HTML, if there is a base tag like `<base href="/a/b">`,
> a relative URL like `c/d` will be resolved by the browser as
> `a/c/d` and not as `a/b/c/d`. But with a base tag like
> `<base href="/a/b/">` it will result in `a/b/c/d`. So by
> adding a slash there, the browser should now search the
> files at the correct location.
>
> Signed-off-by: Daniel Abrecht <public@danielabrecht.ch>
> ---
>  gitweb/gitweb.perl | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index e66eb3d9ba..acb2cce5f6 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -4217,7 +4217,7 @@ sub git_header_html {
>  	# the stylesheet, favicon etc urls won't work correctly with path_info
>  	# unless we set the appropriate base URL
>  	if ($ENV{'PATH_INFO'}) {
> -		print "<base href=\"".esc_url($base_url)."\" />\n";
> +		print "<base href=\"".esc_url($base_url)."/\" />\n";

Doesn't this need to be somewhat conditional?  Sites like repo.or.cz
currently give <base href="/" /> presumably because $base_url for
them is '/', and this change will make them show double slashes
instead of a single one, no?

```
