我有一个react和django应用程序,它是在nginx后面服务的。/admin路由和/api路由都指向uwsgi。但是,在加载这些路由时,除非对页面进行硬刷新,否则将为react应用程序提供服务。反应似乎是为所有的路线服务,而不仅仅是索引。
是否有一种方法可以排除反应中的路由,所以只有当路径是"/“时才会显示,或者nginx/django配置中有什么东西我可以更改以克服这个问题。
这是我的nginx conf的一个片段:
location / {
try_files $uri $uri/ =404;
}
location /api/ {
uwsgi_pass uwsgi;
include /etc/nginx/uwsgi_params;
}
location /admin/ {
uwsgi_pass uwsgi;
include /etc/nginx/uwsgi_params;
}以及我的django urls配置:
urlpatterns = [
path('admin/', admin.site.urls),
path('api/v1/', include(routers.urls))
]任何关于我如何继续工作的想法将不胜感激。
发布于 2022-06-02 17:56:50
这听起来像是在拦截链接的onClick事件,并阻止浏览器正常地处理它。
您可以尝试更改链接标记,以防止它们做出反应:
<a href="/admin/" onClick={() => { location.href = "/admin/" }}>Admin</a>
/* Or if using react router */
<Link to="/admin/" onClick={() => { location.href = "/admin/" }}>Admin</Link>是否有方法排除反应中的路由,以便只有当路径为"/"…时才会显示
如何在React中添加或配置路由?它们应该被更改为使用我上面所示的格式,或者如果您不希望它们显示的话,就删除它们。
…或者,nginx/django配置中有什么东西可以改变以克服这个问题。
您的nginx配置是正确编写的。你可以在这里测试一下。
发布于 2022-08-18 22:21:50
我想我找到了解决办法。
1-将您的react脚本更新为^v4
2-添加您不希望缓存到service-worker.js文件的urls:
registerRoute(
({ request, url }) => {
...
if (
url.pathname.startsWith('/admin') ||
url.pathname.startsWith('/api')
) {
return false;
}
...
return true;
},
createHandlerBoundToURL(process.env.PUBLIC_URL + '/index.html')
);https://stackoverflow.com/questions/72478700
复制相似问题