启用 SSL 刷新 URL 时出现 React-router 问题

2024-04-02

目前,我在使用 React-router 的 BrowserHistory 和 nginx 代理转发请求时遇到问题。我读过以下答案:

React-router url 在刷新或手动写入时不起作用 https://stackoverflow.com/questions/27928372/react-router-urls-dont-work-when-refreshing-or-writting-manually

看来我正在寻找的解决方案是一个包罗万象的解决方案,/*将所有传入请求转发到index.html.

如果 URL 是一层深,则此方法可以正常工作,即。/about。但是,如果我尝试在子路线上刷新页面,/some/other/url,页面完全破裂。

这是我当前的 nginx 配置(注意 http -> https 的永久重定向):

server {
    listen 443 ssl;
    server_name my.domain.io;
    ssl_certificate /etc/letsencrypt/live/my.domain.io/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my.domain.io/privkey.pem;

    root /usr/share/nginx/html;
    index index.html index.htm;

    location / {
        #try_files $uri $uri/ /index.html;
        try_files $uri $uri/ /index.html$is_args$args;
        #try_files $uri /index.html;
        #try_files $uri $uri/ /index.html?$args;
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

    location ~ /.well-known {
        allow all;
    }
}

server {
    listen 80;
    server_name my.domain.io;
    return 301 https://$host$request_uri;
}

In the location /阻止,你会注意到其他一些try_files我曾试图开始工作,但无济于事。

这是什么react-router逻辑看起来像:

<Route path="/user" component={ConnectedUserPage} />
      <Route path="/user/preview/:locationId" component={ConnectedUserPage} />
      <Route
        path="/user/preview/:locationId/menu"
        component={ConnectedUserPage}
        fullMenuVisible={true}
      />
      <Route
        path="/user/preview/:locationId/menu/:sectionName/:someId"
        component={ConnectedUserPage}
        dishDetailsVisible={true}
      />

      {/* Restaurant Profile */}
      <Route
        path="/location-profile/:profileId"
        component={LocationProfile}
        activeTabIndex={0}
      />
      <Route
        path="/location-profile/:profileId/gallery"
        component={LocationProfile}
        activeTabIndex={0}
      />
      <Route
        path="/location-profile/:profileId/gallery/:imageId"
        component={LocationProfile}
        activeTabIndex={0}
      />
      <Route
        path="/location-profile/:profileId/details"
        component={LocationProfile}
        activeTabIndex={1}
      />
      <Route
        path="/location-profile/:profileId/menu"
        component={LocationProfile}
        activeTabIndex={2}
      />
      <Route
        path="/location-profile/:profileId/comments"
        component={LocationProfile}
        activeTabIndex={3}
      />
      <Route
        path="/location-profile/:profileId/stuff"
        component={LocationProfile}
        activeTabIndex={4}
      />
      <Route
        path="/location-profile/:profileId/menu/:somethingName"
        component={LocationProfile}
        activeTabIndex={2}
      />
      <Route
        path="/location-profile/:profileId/menu/:somethingName/:someItemId"
        component={LocationProfile}
        activeTabIndex={2}
      />
      .
      .
      .
      .

任何帮助或指导表示赞赏。


我遇到了像你一样的类似问题,我的团队花了很多时间研究 nginx 和 React-router,这与你的设置非常相似。

我也有以下错误:

未捕获的语法错误:意外的标记

最后我找到了一个解决方案,实际上是在我的index.html服务器文件上。

我正在为我的包使用相对路径

<link href="styles.css" rel="stylesheet" />    
<script src="bundle.js"></script>

路由之后,假设您尝试访问your/path/subdomain,它会尝试获取bundle.js和styles.css文件your/path/subdomain/styles.css and your/path/subdomain/bundle.js,但它们是我项目的根源。

所以我的解决方案就是使用

<link href="/styles.css" rel="stylesheet" />
<script src="/bundle.js"></script>

这解决了这个问题。希望这对您有帮助。

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

启用 SSL 刷新 URL 时出现 React-router 问题 的相关文章

随机推荐

  • 计算查询中活动时间戳之间的时间差

    我对 Access 相当陌生 无法解决 我希望 一个简单的问题 我想我可能是通过 Excel 护目镜来查看它 我有一个名为importedData我每天 并不奇怪 导入一个日志文件 该日志文件来自某些采矿设备上的简单数据记录应用程序 本质上
  • 为什么我无法将工作簿定义为对象?

    为什么我不能用这两种方式定义工作簿 我在那里有范围位只是为了快速测试 我该如何修复它 这会产生一个 Compile Error Type Mismatch Sub Setwbk Dim wbk As Workbook Set wbk F Q
  • 将查询数据保存为 csv 文件

    我有一个应用程序 可以打开 csv 文件并将所有内容显示到格式化的 datagridview 中 从那里我有一个按钮可以打开另一个包含一系列复选框的表单 复选框具有我们之前打开的csv文件的所有属性 用户应该能够根据他们想要的属性查询文件
  • 卸载 Visual Studio 2013 update 1 rc

    害怕听起来像个菜鸟 我在卸载 Visual Studio 2013 update 1 时遇到问题 我怎么做 转到 控制面板 gt 程序 gt 程序和功能 gt 左侧栏上的 查看已安装的更新 然后向下滚动到 Microsoft Visual
  • 某些表的动态数据库备份

    我只需要备份主数据库中的一些表 其他表是参考表并且是静态的 因此不需要备份 我在 SD 卡上创建了一个新的空白数据库 我可以直接访问SD卡上的数据库还是需要在备份完成后复制它 真正的问题是我是否可以循环遍历每个记录中的字段或其他内容 这样我
  • 如何使用boost多精度生成正态随机数?

    我正在尝试使用 boost 的多精度从正态分布生成随机数 我可以从均匀分布生成随机数 但是当我尝试从标准正态分布生成随机数时 它报告错误 这是代码 以下来自来自 boost 的示例 http www boost org doc libs 1
  • Django 使用整数字段作为外键字段

    为了支持旧的 遗留 数据库 我们必须创建一个使用的表整数字段 as a 外键 to User表 这就是我们的模型的样子 class UserHistory user id models IntegerField null True blan
  • FusedLocationProviderClient requestLocationUpdates 不会触发上述 API 23 的 LocationCallBack

    我已经用尽了所有可能的方法来解决这个问题 在对我的应用程序进行调整之前 从技术上讲 我使用的是在 API 23 及更高版本中运行的相同代码 回调 在请求位置更新中 不在手机中触发 棉花糖及以上 但它在模拟器中运行良好 使用 Pixel 2
  • 有按钮栏的视图吗? (描述视图的图像链接)

    我正在寻找有关 Android 默认应用程序中底部栏的视图或某种信息 例如电子邮件或解锁图案 如下图所示 我在 Android 网站或 Google 搜索中找不到任何有关此内容的信息 Image http img11 imageshack
  • 使用Python编写Parquet文件的方法?

    我无法找到允许使用 Python 编写 Parquet 文件的库 如果我可以结合使用 Snappy 或类似的压缩机制 那就加分了 到目前为止 我发现的唯一方法是将 Spark 与pyspark sql DataFrame镶木地板支持 我有一
  • MVC 操作被调用两次

    我有一个MVC Action Method如果请求需要时间才能完成 则会被点击两次 在检查 chrome 控制台网络日志和 fiddler 时 该请求仅从 JS 发送一次 在下图中 我面临这个问题Approach 1 但是 如果我这样做的话
  • Django“DecimalFields 必须定义“decimal_places”属性。”

    我的模型字段之一如下 aaf 1kg all models DecimalField blank True null True 当我正常使用我的模型时 一切都很好 当我在一个ready hook https docs djangoproje
  • java中的虚方法调用是什么?

    我在一些计算机科学测试中看到了下一段 我希望我能在这里得到它的含义的一个很好的解释 因为我用谷歌搜索了一个小时 但找不到任何东西 当我们说 Java 语言有虚方法调用我们的意思是 在java应用程序中 执行的方法是由运行时的对象类型决定的
  • 获取console.log()显示自定义对象描述

    我有一个自定义的 JS 对象来表示网格 对于这个例子来说 它看起来像这样 function Grid c r var layout var contentPointer 0 this getCell function c r Return
  • 在 TVML 应用程序中更改 XMLHttpRequest 的用户代理

    我正在使用 TVMLKit 开发 Apple TV 应用程序 我的应用程序的 JavaScript 代码尝试使用以下命令向服务器发送 HTTP 请求XMLHttpRequest 服务器需要特定的用户代理 所以我尝试了以下方法 var req
  • Android 视频视图中缓冲区达到 20% 后如何开始(播放)视频

    我有一个视频视图 可以使用来自服务器的 url 来播放视频 我希望在缓冲达到 20 时播放视频 所以我已经将 setOnBufferingUpdateListener 的侦听器添加到媒体播放器中 如下所示 Uri video Uri par
  • 如何为 php 安装 hiphop?

    大多数开发人员都了解 Facebook 的 Hiphop for php 我想在我的脚本中使用它 但不知道从哪里开始 我应该与我的服务器提供商联系吗 或者我需要在脚本中添加一些代码吗 HipHop 很难安装 但幸运的是我刚刚经历过它 您需要
  • 相当于 Python 中 Julia 中的“with”?

    Julia 有与 Python 相当的东西吗 with 也许作为一个宏 这非常有用 例如 自动关闭打开的文件 Use a do堵塞 关于 do 块的文档是here https en wikibooks org wiki Introducin
  • 使用 VSTO 将数据加载到 Microsoft Project 时如何提高性能

    背景 我们有一个现有的应用程序 可以将数据加载到 Microsoft Project 中 以便可以由 MS Project 进行操作 原始应用程序是由 VB6 编写的旧式 COM 项目加载项 针对 MS Project 2003 2007
  • 启用 SSL 刷新 URL 时出现 React-router 问题

    目前 我在使用 React router 的 BrowserHistory 和 nginx 代理转发请求时遇到问题 我读过以下答案 React router url 在刷新或手动写入时不起作用 https stackoverflow com