我遇到了这样一种情况:我必须在本地构建一个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
的响应
感谢您的阅读,任何帮助将不胜感激🙏
1条答案
按热度按时间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中。我希望有一天这能帮助一个迷路的旅行者!