我正在使用React-router,当我点击链接按钮时它工作正常,但是当我刷新我的网页时它没有加载我想要的东西.
例如,我进入localhost/joblist,一切都很好,因为我来到这里按一个链接.但是,如果我刷新网页,我得到:不能GET/joblist
默认情况下它没有像这样工作.最初我有我的URL:localhost /#/和localhost /#/ joblist,他们工作得非常好.但是我不喜欢这种网址,所以试图抹去我写的'#':
Cannot GET /joblist
Run Code Online (Sandbox Code Playgroud)
localhost /不会发生这个问题,这个问题总是返回我想要的.
编辑:这个应用程序是单页面,因此/ joblist不需要向任何服务器询问任何内容.
EDIT2:我的整个路由器.
Router.run(routes, Router.HistoryLocation, function (Handler) {
React.render(<Handler/>, document.body);
});
Run Code Online (Sandbox Code Playgroud) 我正在使用React Router为多页网站进行路由.当试图直接转到子页面https://test0809.herokuapp.com/signin时,您会收到"404 Not Found -nginx"错误(为了能够看到此问题,您可能需要转到此链接)隐身模式,所以没有缓存).如果你从主页出来,所有链接都可以正常工作:test0809.herokuapp.com/.我正在使用BrowserRouter,并且能够通过将BrowserRouter更改为HashRouter来消除"404 not found"错误,这会给我的所有网址带来"#"符号.除了在你的网址中有"#"的所有问题,最大的问题是我需要在我的网站中实现LinkedIn Auth,而LinkedIn OAuth 2.0不允许重定向网址包含#.
LinedIn OAuth 2.0错误屏幕抓取
import React, { Component } from 'react'
import { BrowserRouter as Router, Route, Link } from 'react-router-dom'
import LinkedIn from 'react-linkedin-login'
const Home = () => <div><h2>Home</h2></div>
const About = () => <div><h2>About</h2></div>
class Signin extends Component {
callbackLinkedIn = code => {
console.log(1, code)
}
render() {
return (
<div>
<h2>Signin</h2>
<LinkedIn
clientId="clientID"
callback={this.callbackLinkedIn}
>
</div>
)
}
}
const BasicExample = …Run Code Online (Sandbox Code Playgroud)