React Router BrowserRouter 在不通过主页点击直接进入子页面时会导致“404 Not Found - nginx”错误

2023-12-29

我正在使用 React Router 为多页面网站进行路由。当尝试直接进入子页面时https://test0809.herokuapp.com/signin https://test0809.herokuapp.com/signin您会收到“404 Not Found -nginx”错误(为了能够看到此问题,您可能需要以隐身模式访问此链接,这样就没有缓存)。如果您从主页访问,所有链接都可以正常工作:test0809.herokuapp.com/。我使用的是 BrowserRouter,并且通过将 BrowserRouter 更改为 HashRouter 能够消除“404 未找到”错误,这为我的所有网址提供了“#”符号。除了网址中包含“#”的所有问题之外,最大的问题是我需要在我的网站中实现 LinkedIn Auth,而 LinkedIn OAuth 2.0 不允许重定向 URL 包含 #。LinkedIn OAuth 2.0 错误屏幕抓取 https://i.stack.imgur.com/epVHg.png

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;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Router BrowserRouter 在不通过主页点击直接进入子页面时会导致“404 Not Found - nginx”错误 的相关文章

随机推荐

  • `useTheme` 必须在 `NativeBaseConfigProvider` 中使用

    在我的项目中 我遇到了上述错误 谁能告诉我如何解决这个错误 我遇到的错误是 Error useTheme必须在以下时间内使用NativeBaseConfigProvider 该错误位于 in Container in ProductCont
  • android中的PeerConnection实例总是为空?

    我必须在 android 应用程序中实现 WebRTC 因为我正在使用libjingle库 版本 11139 在此我总是得到pc PeerConnection class instance 始终为空 我已经检查过的值 factory Pee
  • 如何从 C# 中的字符串中删除 \r\n?

    我正在尝试找出一种简单的方法从字符串中删除 r n 例子 文本 这个 is a string r n这个 is a string r n I tried text Replace r n and text Replace r n strin
  • Postgres表列名限制?

    我在 psql 中这样做了 CREATE TABLE IF NOT EXISTS apiss skey TEXT time INTEGER user TEXT ip TEXT I get ERROR syntax error at or n
  • 无法找到 Spring NamespaceHandler 错误

    我已经遇到这个错误近一周了 我正准备屈服 我已经使用 Maven2 来制作大 jar 文件 当我使用以下命令运行 jar 文件时 java jar someJar jar 我收到此错误 ERROR 27 55 13 10 55 Launch
  • 如何将 numpy 数组从某一行开始写入 .txt 文件?

    我需要将 3 个 numpy 数组写入 txt 文件 文件头看起来像这样 Filexy time operation1 operation2 numpy 数组如下所示 time np array 0 60 120 180 operation
  • 拦截 SimpleCursorAdapter 操作

    我正在编写一个应用程序 它使用 SimpleCursorAdapter 来显示 SQLite 数据库中的项目列表 该应用程序是一个列表应用程序 它允许用户创建项目列表 数据库中有一个字段用于跟踪用户是否希望列表项的文本被划掉 基本上 我想拦
  • 对 Visual Studio 2012 VSIX 扩展进行数字签名

    我正在尝试签署一份Visual Studio 2012 extension被封装为VSIX file 我已按照以下说明进行操作http www jeff wilcox name 2010 03 vsixcodesigning http ww
  • 将 Google Play 服务添加到 Eclipse 项目

    我已经红了好几个了posts https stackoverflow com questions 14230808 google map android api v2 crashed和文章 但它对我不起作用 我无法在我的项目中添加 使用 G
  • 如何编辑现有的 VS 代码片段

    有没有办法删除或编辑 Visual Studio CODE 中的一些默认代码片段 例如 当我输入 req TAB 我需要require not requestAnimationFrame 扩展片段可以在下面的每个片段目录中找到 如果扩展中有
  • 如何使用 angularjs 检测浏览器?

    我是 AngularJS 的新手 如何在 angularjs 中检测 userAgent 可以在控制器中使用它吗 尝试了类似下面的东西 但没有运气 var browserVersion int msie d exec lowercase n
  • 在 Actionscript 3 项目中显示 HTML

    Folks 我出于 SEO 目的从 Drupal 后端提取所有 Flash 纯 AS3 项目 而不是 Flash CS3 内容 这非常有效 只是 TextField 对象中内置的 HTML 渲染还有很多不足之处 谁能推荐一些允许我显示 HT
  • 以编程方式更改 Eclipse 中的背景颜色

    我有一个关于 eclipse 插件开发的问题 有什么办法吗 通过它我可以以编程方式更改 Eclipse 中的背景颜色 我可以通过调用更改文本前景色 ITextViewer 中的 setTextColor 颜色 偏移量 长度 controlR
  • 按 Ctrl+C 后,如何让 Python 在程序停止之前完成作业?

    我有 4 个这样的工作的无限循环 list1 while 1 try job1 a B job2 c a accd job3 d len c job4 list1 append d except KeyboardInterrupt save
  • word2vec - KeyError:“单词 X 不在词汇表中”

    使用Word2Vec模块的实现gensim为了为我在纯文本文件中拥有的句子构建单词嵌入 尽管这个词happy在词汇表中定义 得到错误KeyError word happy not in vocabulary 尝试将给出的答案应用到类似的问题
  • 为什么建议避免使用 .innerHTML?

    抱歉 我是 JavaScript 菜鸟 但是谁能解释一下为什么建议不要使用 innerHTML 当我们有更快 更容易的东西时 innerHTML 为什么我们不应该使用它 innerHTML是一把大锤 它将清除所选 DOM 元素的内容 并用当
  • C# - 外键引用无效表 - 基本迁移不起作用

    尝试用 C 制作我的第一个项目 然而 到目前为止 这非常令人沮丧 这是一个我无法解决的问题 因为我看不出有什么问题 我试图在我的数据库中进行简单的迁移 用户迁移文件 public override void Up CreateTable d
  • 为什么 ServiceWorker 无法访问 Cookie

    据我所知服务人员无法访问 cookie 因此 我在为我的网站实施软件时面临很多问题 我想知道是什么原因服务人员无法访问 cookie 现在我正在使用消息传递将 cookie 内容传达给服务人员 有没有更好的方法或技巧可以更有效地做到这一点
  • 什么时候提交 FragmentTransaction 是安全的?

    根据docs https developer android com reference android app FragmentManager html 片段事务只能在事务之前创建 提交 保存其状态的活动 如果您尝试在之后提交交易 Act
  • React Router BrowserRouter 在不通过主页点击直接进入子页面时会导致“404 Not Found - nginx”错误

    我正在使用 React Router 为多页面网站进行路由 当尝试直接进入子页面时https test0809 herokuapp com signin https test0809 herokuapp com signin您会收到 404