diff options
author | a1012112796 <1012112796@qq.com> | 2022-03-23 21:29:18 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-23 13:29:18 +0000 |
commit | d8f578412ebbf5b05de254a717f71cf5d3f5dab1 (patch) | |
tree | 2f3922047265072fa239a61c165b45119c296f8a /modules/context/repo.go | |
parent | 5248232c44f3819fbb8a6cdac258740afbb94823 (diff) | |
download | gitea-d8f578412ebbf5b05de254a717f71cf5d3f5dab1.tar.gz gitea-d8f578412ebbf5b05de254a717f71cf5d3f5dab1.zip |
Redirect .wiki/* ui link to /wiki (#18831)
Redirect .wiki/* ui link to /wiki
fix #18590
Signed-off-by: a1012112796 <1012112796@qq.com>
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'modules/context/repo.go')
-rw-r--r-- | modules/context/repo.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/modules/context/repo.go b/modules/context/repo.go index 87be2af135..b345decf7e 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -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 { |