反应路由器中的子域

时间:2016-02-26 17:38:46

标签: reactjs subdomain react-router

我想设置反应路由器以用于子域。我不确定子域代理的逻辑应该在哪里。

我想:

roxy.coolestblog.com/profile路由到coolestblog.com/roxy/profile mohammed.coolestblog.com/profile路由到coolestblog.com/mohammed/profile benben.coolestblog.com/profile路由到coolestblog.com/benben/profile

另一个用例:

en.coolestblog.com/some-article路由到coolestblog.com/en/some-article fr.coolestblog.com/un-article路由到coolestblog.com/fr/un-article es.coolestblog.com/una-article路由到coolestblog.com/es/una-article

我已经让它在没有子域的情况下工作了。

我如何实现这一点,以便在客户端和服务器上都能正常工作?

1 个答案:

答案 0 :(得分:3)

虽然浏览器历史记录API限制了我们的能力,但我们可以直接与window.location进行互动,以实现此目标。

在设置路由器之前,您可以通过执行以下操作来修改URL:

let host = window.location.host;
let protocol = window.location.protocol;
let parts = host.split(".");
let subdomain = "";
// If we get more than 3 parts, then we have a subdomain
// INFO: This could be 4, if you have a co.uk TLD or something like that.
if (parts.length >= 3) {
  subdomain = parts[0];
  // Remove the subdomain from the parts list
  parts.splice(0, 1);
  // Set the location to the new url
  window.location = protocol + "//" + parts.join(".") + "/" + subdomain;
}

当然,这有其警告。例如,如果您未明确知道主机名,则无法正确确定是否存在子域。它没有对下面的URL应该做什么做出任何假设,但要解决这个问题将是微不足道的。