Reactjs 如何为2个不同的子域支持react js应用程序

Reactjs 如何为2个不同的子域支持react js应用程序,reactjs,subdomain,Reactjs,Subdomain,我有点难以支持react js来支持2个不同的子域。以下是我需要我的应用程序支持的子域 www-dev.somedomain/apps/myapp app-dev.somedomain/myapp 如您所见,react应用程序路径也随着子域的变化而变化。我已经在我的.env文件中定义了PUBLIC_URL和REACT_APP_路径,如下所示 REACT_APP_PATH=/myapp GENERATE_SOURCEMAP=false PUBLIC_URL=/myapp 使用以上环境变量ap

我有点难以支持react js来支持2个不同的子域。以下是我需要我的应用程序支持的子域

  • www-dev.somedomain/apps/myapp
  • app-dev.somedomain/myapp
如您所见,react应用程序路径也随着子域的变化而变化。我已经在我的.env文件中定义了PUBLIC_URL和REACT_APP_路径,如下所示

REACT_APP_PATH=/myapp
GENERATE_SOURCEMAP=false
PUBLIC_URL=/myapp
使用以上环境变量app-dev。。。URL正在运行。如果我更改到
apps/myapp
的路径,则www子域正在工作。我需要一种同时支持两个子域的方法


我怎样才能做到这一点?

不行,你的React应用程序将被编译成静态HTML、JS和CSS文件,你唯一可以向构建工具传递参数的时间是在构建之前,这就是你现在正在做的。一旦建筑完工,就不能再改变了


可以使用不同的环境变量编写两个shell脚本。然后调用它们中的每一个将构建不同的web应用。

最后,我通过以下步骤解决了这个问题;我使用Nginx重定向到同一个主机。我遇到的问题是路径

  • www-dev.somedomain/apps/myapp
  • app-dev.somedomain/myapp
根据我的Nginx配置,两个url都被重定向到服务器中的
/
。然后应用程序找不到静态文件,因为路径与域不同。所以为了解决这个问题,我做了如下操作

REACT_APP_PATH=/myapp
GENERATE_SOURCEMAP=false
PUBLIC_URL=/myapp
  • 首先,从我的env文件中删除
    PUBLIC\u URL
    。然后应用程序文件将托管在
    /
    位置
  • homepage
    属性添加到
    package.json
    文件中。添加主页将提供与index.html相关的资产。阅读更多关于主页的信息
  • 由于应用程序使用内部路由,我添加了简单的Nginx规则来重写静态文件的位置,如下所示。
    rewrite/static/(.*)$/static/$1 break

这解决了我支持两个DOAMIN的问题。

我找到了一篇文章,但我不确定它是否适用于我的案例@PubuduJayasanka it让服务器重新映射请求url。也许它会起作用,我用homepage属性和一个简单的Nginx重写规则解决了这个问题。谢谢你的帮助