Sfoglia il codice sorgente

Redirect .wiki/* ui link to /wiki (#18831)

Redirect .wiki/* ui link to /wiki

fix #18590

Signed-off-by: a101211279 <1012112796@qq.com>
Signed-off-by: Andrew Thornton <art27@cantab.net>

Co-authored-by: Andrew Thornton <art27@cantab.net>
tags/v1.18.0-dev
a1012112796 2 anni fa
parent
commit
d8f578412e
Nessun account collegato all'indirizzo email del committer
1 ha cambiato i file con 20 aggiunte e 0 eliminazioni
  1. 20
    0
      modules/context/repo.go

+ 20
- 0
modules/context/repo.go Vedi File

@@ -441,6 +441,26 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) {
ctx.Repo.Owner = owner
ctx.Data["Username"] = ctx.Repo.Owner.Name

// redirect link to wiki
if strings.HasSuffix(repoName, ".wiki") {
// ctx.Req.URL.Path does not have the preceding appSubURL - any redirect must have this added
// Now we happen to know that all of our paths are: /:username/:reponame/whatever_else
originalRepoName := ctx.Params(":reponame")
redirectRepoName := strings.TrimSuffix(repoName, ".wiki")
redirectRepoName += originalRepoName[len(redirectRepoName)+5:]
redirectPath := strings.Replace(
ctx.Req.URL.EscapedPath(),
url.PathEscape(userName)+"/"+url.PathEscape(originalRepoName),
url.PathEscape(userName)+"/"+url.PathEscape(redirectRepoName)+"/wiki",
1,
)
if ctx.Req.URL.RawQuery != "" {
redirectPath += "?" + ctx.Req.URL.RawQuery
}
ctx.Redirect(path.Join(setting.AppSubURL, redirectPath))
return
}

// Get repository.
repo, err := repo_model.GetRepositoryByName(owner.ID, repoName)
if err != nil {

Loading…
Annulla
Salva