我已经在博览会上做了一个项目。
工作正常,我很高兴,但是现在我需要直接访问子页面(例如https://example.com/backoffice)
在App.js中,我做到了:
...
const linking = {
prefixes: ['https:/example.com'],
config: {
screens: {
Home: '',
Backoffice: '/backoffice',
}
},
};
return (
<NavigationContainer linking={linking}>
...
如果我以开发模式执行代码,并将站点调用到:19006端口,则可以直接访问子页面。
如果我在expo build:web
和npx serve web-build
之后执行代码,则无法访问子页面(我收到未找到404的信息)。
答案 0 :(得分:1)
由于您正在使用服务,因此您需要serve.json
来处理重定向。 Expo会自动生成一个serve.json
到expo build:web
,但是它不包含任何重定向代码。您可以在app.json
中添加一个设置,以自动生成重定向代码,但我在文档中看不到任何内容。 (希望有人可以在这里启发我)。
假设这是一个带有index.html
的单页Web应用程序,则在构建Web应用程序后,需要在serve.json
内添加以下内容:
{
...
"rewrites": [
{ "source": "/*", "destination": "/index.html" }
]
}
此方法并不理想,因为每次构建Web应用程序时都必须这样做,但至少它应允许您在本地运行构建时访问子页面。
例如,如果要在Netlify上进行部署,则需要添加一个_redirects
文件。我将_redirects
文件放在项目根目录下的目录web
中(即web/_redirects
),您可以在Netlify文档中找到有关重定向文件的更多信息,但该文件应如下所示:
/* /index.html 200
创建此文件后,如果运行expo build:web
,则应在web-build
目录中看到它。这应该允许您将Netlify部署为单页Web应用程序。