Fix a bug: redirect to homepage for some url.

In a single page application, the url sometimes does not correspond to
the actual resources on the server. Thus, it might cause 404 when users
refresh the page. By redirecting this kind of url back to the homepage,
the proper page can be rendered. If the url does not exist, the front
end will redirect to a Not Found page.

Test: mannual tested.
Change-Id: I36beff436a450ae7fcabe9172df9c7cc217d7305
This commit is contained in:
lishutong
2021-07-28 16:54:09 +00:00
parent c4b3dd1aef
commit 30f991bf6e
6 changed files with 75 additions and 19 deletions

View File

@@ -2,6 +2,7 @@ import { createRouter, createWebHistory } from 'vue-router'
import PackageAnalysis from '@/views/PackageAnalysis.vue'
import Demo from'@/views/Demo.vue'
import About from '@/views/About.vue'
import NotFound from '@/views/NotFound.vue'
const routes = [
{
@@ -21,6 +22,11 @@ const routes = [
path: '/about',
name: 'About',
component: About
},
{
path: '/:catchAll(.*)',
name: 'Not Found',
component: NotFound
}
]

View File

@@ -0,0 +1,21 @@
<template>
<center>
<h1>Not Found!</h1>
<p>
<a href="/">Go home?</a>
</p>
</center>
</template>
<style scoped>
center {
margin: 15vw;
}
h1 {
color: var(--border);
font-size: 2em;
}
</style>

View File

@@ -45,7 +45,7 @@ export default {
sortable: true,
display: function (row) {
return (
"<a href=/check/" + row.id + '>'
"<a href=/check-job/" + row.id + '>'
+ row.status
+ "</a>"
);

View File

@@ -3,6 +3,7 @@ import JobList from '@/views/JobList.vue'
import JobDetails from '@/views/JobDetails.vue'
import About from '@/views/About.vue'
import JobConfigure from '@/views/JobConfigure.vue'
import NotFound from '@/views/NotFound.vue'
const routes = [
{
@@ -11,7 +12,7 @@ const routes = [
component: JobList
},
{
path: '/check/:id',
path: '/check-job/:id',
name: 'JobDetails',
props: true,
component: JobDetails
@@ -25,6 +26,11 @@ const routes = [
path: '/create',
name: 'Create',
component: JobConfigure
},
{
path: '/:catchAll(.*)',
name: 'Not Found',
component: NotFound
}
]

View File

@@ -0,0 +1,21 @@
<template>
<center>
<h1>Not Found!</h1>
<p>
<a href="/">Go home?</a>
</p>
</center>
</template>
<style scoped>
center {
margin: 15vw;
}
h1 {
color: var(--border);
font-size: 2em;
}
</style>

View File

@@ -64,7 +64,6 @@ class RequestHandler(CORSSimpleHTTPHandler):
self.end_headers()
def do_GET(self):
if self.path.startswith('/check'):
if self.path == '/check' or self.path == '/check/':
statuses = jobs.get_status()
self._set_response(type='application/json')
@@ -72,14 +71,13 @@ class RequestHandler(CORSSimpleHTTPHandler):
json.dumps([status.to_dict_basic()
for status in statuses]).encode()
)
else:
elif self.path.startswith('/check/'):
id = self.path[7:]
status = jobs.get_status_by_ID(id=id)
self._set_response(type='application/json')
self.wfile.write(
json.dumps(status.to_dict_detail(target_lib)).encode()
)
return
elif self.path.startswith('/file'):
if self.path == '/file' or self.path == '/file/':
file_list = target_lib.get_builds()
@@ -98,6 +96,10 @@ class RequestHandler(CORSSimpleHTTPHandler):
elif self.path.startswith('/download'):
self.path = self.path[10:]
return CORSSimpleHTTPHandler.do_GET(self)
else:
if not os.path.exists('dist' + self.path):
logging.info('redirect to dist')
self.path = '/dist/'
else:
self.path = '/dist' + self.path
return CORSSimpleHTTPHandler.do_GET(self)