无法从Apache服务器上的React路由器路由中检索静态json文件

jgovgodb  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(150)

我遇到了这样一种情况:我必须在本地构建一个React项目,然后将其上传到Apache服务器上的特定路径。一切正常,只是花了一段时间才弄清楚如何让Apache服务器遵守react-router路由。我们最终创建了一个.htaccess文件,将其添加到我的应用程序正在上传的路径,这似乎解决了问题:

RewriteEngine On
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
    RewriteRule ^ - [L]

    # Fallback all other routes to index.html
    RewriteRule ^ /events/new-year/index.html [L]

但是我收到了一个请求,要求将config变量放在/static目录下的一个json文件中,这样以后非JS开发人员就可以很容易地修改这些变量。从文件中加载JSON数据在应用程序根目录下运行得很好。在我得到的响应中:

{
    data: { 
        eventDates: "20 Nov - 28 Nov"
        localUrl: "http://localhost:3000"
        pageTitle: "Some title"
        serverURl: ""
        year: "2023"
    }
}

但是当尝试从任何react-router路由加载json时,我得到了一个非常奇怪的输出:

{
    data: "<!doctype html><html lang="en"><head><meta charset="UTF-8"/><title>Current Page Title</title><link href="//www.google-analytics.com" rel="dns-prefetch"><link href="https://www.somesite.com/content/favicon-150x150.png" rel="shortcut icon"><link href="https://www.somesite.com/content....."
}

我剪切了大部分的输出,因为它输出了静态文件夹中index.html的所有html。为什么我不能在这些子路由上得到一个好的响应?
我对Json这样加载:

const data = await axios("./resources/data/config.json");

我在前面尝试过不使用.,也尝试过不使用./。我发现使用./以外的任何东西时,都得到undefined的响应

感谢您的阅读,任何帮助将不胜感激🙏

inb24sb2

inb24sb21#

结果发现路径有问题。因为相对路径不起作用(并且由于某种原因返回html),我不得不使用/(非相对路径?)。虽然这之前返回undefined,但在查看网络选项卡后,我意识到了原因:
我的应用程序位于www.website.com/some-path/my-application,所以我需要从www.website.com/some-path/my-application/resources获取静态资源,但它却在www.website.com/resources中查找,所以我所要做的就是将/some-path/my-application添加到我之前使用的url中。
我希望有一天这能帮助一个迷路的旅行者!

相关问题