我有一个带有AngularJS前端和Flask后端的应用程序。
我在Flask中有以下路由将所有请求发送到index.html文件(以及API路由的一些路由):
@app.route('/')
def home():
return render_template('index.html')
@app.route('/api/colours')
def colours():
...
@app.route('/<path:page>')
def fallback(page):
return redirect(url_for('home'))
然后我使用Angular StateProvider进行客户端路由:
$stateProvider
.state('home', {
url: '/',
templateUrl: 'static/templates/home.html'
})
.state('contact', {
url: '/contact',
templateUrl: 'static/templates/contact.html'
});
如果我从网站的根目录开始并点击链接将我带到联系页面,这非常有用。但是,如果我想通过输入mysite.com/contact
直接转到联系页面,它会重定向主页。这是预期的。
如果它可用,我如何允许它转到客户端路由,否则重定向到主页?
答案 0 :(得分:1)
如果您遇到家庭或未知路线(404),则从服务器端返回index.html
,因为您不知道客户端是否可以处理此路线。加载index.html
后,客户端路由应接管并决定是重定向到Not found
还是以其他方式处理此路由。
@app.route('/<path:page>')
def fallback(page):
return render_template('index.html')