Redirecting from Server to Cloud - which URLs to handle?

Philip Colmer
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
May 14, 2021

We're about to start migrating projects from our Jira Server to Jira Cloud. Since this is going to be a gradual process, I want to configure our Apache front-end with redirect rules to handle the projects that have been moved.

I wrote a similar script for Confluence (linaro-its/confluence-space-redirects (github.com)) but Jira looks like a bigger challenge.

I'm therefore trying to come up with the different types of URL that Jira uses in order to then create the appropriate redirects.

So far, I've got:

  • Individual issues. /browse/<issue reference>
  • All issues in a project. /projects/<project key>/issues/<issue reference>
  • Project configuration. /projects/<project key>?<something>
  • Backlog. /secure/RapidBoard.jspa?rapidView=<board ref>&view=planning.nodetail
  • Kanban. As for backlog but without the view specified

I know that some of the URLs are also specific to plugins like Structure.

Anyone got any other useful URLs that I need to try to capture?

 

1 answer

0 votes
Brant Schroeder
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
May 19, 2021

@Philip Colmer I would suggest making the issues read-only in the projects that have been moved.  Then if you miss anything the users would know as they can not do anything on those issues.  You would then be able to update your redirect list. 

Peter Murray November 18, 2021

Hi @Philip Colmer —I'm facing a similar situation: one of our open source projects has asked about URL redirects from their existing Server instance to the cloud.  (The project has been using Jira for 13 years and they want to be sure all of the links scattered around mailing list archives, documentation notes, and elsewhere are still valid.)  Did you find a solution?

Philip Colmer
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 18, 2021

@Peter Murray I'm sorry but I didn't. I did come up with a set of rules that worked for a test project (see below) but I couldn't be sure that it was 100% complete partly because of how plugins on Jira can add to the variety of routes into what you can see on a project.

Another issue for me, compared with Confluence, was the challenge of dealing with partial migrations. The challenge here was that we were migrating projects individually so that there was an opportunity to clean up a bit before moving on to the next project. The problem is that Jira often handles mouse clicks *within the browser*. In other words, you click on a URL but the browser doesn't go off to the server to request that URL. Instead, Jira "hijacks" the click, figures out where you are going and takes you there straight away. That problem means that redirect rules at the web server level didn't always get actioned because the request didn't get to the server. Of course, if you've completed the migration, that isn't an issue.

Sorry I can't be of more help.

RewriteCond "%{QUERY_STRING}" "^rapidView=252&projectKey=ITS&view=reporting&chart=controlChart&useStoredSettings=true"
RewriteRule "^/secure/RapidBoard\.jspa" "https://linaro.atlassian.net/projects/ITS?selectedItem=com.atlassian.jira.jira-projects-plugin:repo
rt-page" [R=301,END]

RewriteCond "%{QUERY_STRING}" "^projectKey=ITS&rapidView=252&view=(planning|planning.nodetail)$"
RewriteRule "^/secure/RapidBoard\.jspa" "https://linaro.atlassian.net/secure/RapidBoard.jspa?projectKey=ITS&rapidView=21&view=planning.nodet
ail" [R=301,END]

RewriteCond "%{QUERY_STRING}" "^projectKey=ITS&rapidView=252$"
RewriteRule "^/secure/RapidBoard\.jspa" "https://linaro.atlassian.net/secure/RapidBoard.jspa?projectKey=ITS&rapidView=21" [R=301,END]

RewriteCond "%{QUERY_STRING}" "^rapidView=252&projectKey=ITS&view=(planning|planning.nodetail)(&issueLimit=100)?$"
RewriteRule "^/secure/RapidBoard\.jspa" "https://linaro.atlassian.net/secure/RapidBoard.jspa?projectKey=ITS&rapidView=21&view=planning.nodet
ail%2" [R=301,END]

RewriteCond "%{QUERY_STRING}" "^rapidView=252&projectKey=ITS(&selectedIssue=ITS-[0-9]*)?$"
RewriteRule "^/secure/RapidBoard\.jspa" "https://linaro.atlassian.net/secure/RapidBoard.jspa?projectKey=ITS&rapidView=21%1" [R=301,END]

RewriteCond "%{QUERY_STRING}" "^rapidView=252(&view=planning.nodetail&issueLimit=100)$"
RewriteRule "^/secure/RapidBoard\.jspa" "https://linaro.atlassian.net/secure/RapidBoard.jspa?projectKey=ITS&rapidView=21%1" [R=301,END]

RewriteCond "%{QUERY_STRING}" "^rapidView=252(&selectedIssue=ITS-[0-9]*)?$"
RewriteRule "^/secure/RapidBoard\.jspa" "https://linaro.atlassian.net/secure/RapidBoard.jspa?projectKey=ITS&rapidView=21%1" [R=301,END]

RewriteRule "^/browse/ITS(-[0-9]+)?$" "https://linaro.atlassian.net/browse/ITS$1" [R=301,END]

# https://projects.linaro.org/projects/ITS/issues/ITS-1723?filter=allopenissues
RewriteCond "%{QUERY_STRING}" "^(.+)$"
RewriteRule "^/projects/ITS/issues/ITS(-[0-9]+)$" "https://linaro.atlassian.net/projects/ITS/issues/ITS$1?%1" [R=301,END]

RewriteRule "^/projects/ITS/issues$" "https://linaro.atlassian.net/projects/ITS/issues?" [R=301,END]

RewriteCond "%{QUERY_STRING}" "^(.+)$"
RewriteRule "/projects/ITS" "https://linaro.atlassian.net/projects/ITS?%1" [R=301,END]
Like # people like this
Peter Murray November 19, 2021

Argh!  Okay, thanks for the advice and insights.  Fortunately, I have just one Jira project to move, so that simplifies my life a little bit.

 

Much appreciated, @Philip Colmer

Suggest an answer

Log in or Sign up to answer