- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 React Router 为多页面网站路由。尝试直接转到子页面时 https://test0809.herokuapp.com/signin你会得到一个“404 Not Found -nginx”错误(为了能够看到这个问题,你可能需要在隐身模式下访问这个链接,这样就没有缓存了)。如果您从主页访问,所有链接都可以正常工作:test0809.herokuapp.com/
。我正在使用 BrowserRouter,并且能够通过将 BrowserRouter 更改为 HashRouter 来消除“404 not found”错误,这会为我的所有网址提供一个“#”符号。除了在你的 url 中有一个“#”的所有问题之外,最大的问题是我需要在我的网站中实现 LinkedIn Auth,而 LinkedIn OAuth 2.0 不允许重定向 URL 包含#。 LinedIn OAuth 2.0 error screen grab
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 = () =>
<Router>
<div>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/signin">Signin</Link>
</li>
</ul>
<hr />
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/signin" component={Signin} />
</div>
</Router>
export default BasicExample
对解决方法有什么建议吗?
背景:我用 create-react-app 开始了这个项目。 GitHub 存储库:/debelopumento/test0809
最佳答案
问题是 nginx 不知道如何处理 /signin
。您需要更改您的 nginx 配置(通常在 /etc/nginx/conf.d/
中)以服务您的 index.html
而不管路由。这是一个可能有帮助的示例 nginx 配置:
server {
listen 80 default_server;
server_name /var/www/example.com;
root /var/www/example.com;
index index.html index.htm;
location ~* \.(?:manifest|appcache|html?|xml|json)$ {
expires -1;
# access_log logs/static.log; # I don't usually include a static log
}
location ~* \.(?:css|js)$ {
try_files $uri =404;
expires 1y;
access_log off;
add_header Cache-Control "public";
}
# Any route containing a file extension (e.g. /devicesfile.js)
location ~ ^.+\..+$ {
try_files $uri =404;
}
# Any route that doesn't have a file extension (e.g. /devices)
location / {
try_files $uri $uri/ /index.html;
}
}
关于javascript - React Router BrowserRouter 在不通过主页点击直接转到子页面时导致 "404 Not Found - nginx "错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45598779/
我是一名优秀的程序员,十分优秀!