我想设置反应路由器以用于子域。我不确定子域代理的逻辑应该在哪里。
我想:
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
我已经让它在没有子域的情况下工作了。
我如何实现这一点,以便在客户端和服务器上都能正常工作?
答案 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应该做什么做出任何假设,但要解决这个问题将是微不足道的。