如何在没有www的情况下显示域名,但即使用户进入domain.com(没有www)也能工作

How to show the domain name without www but to work even if the user enters domain.com (without www)

本文关键字:www com domain 用户 没有 工作 情况下 域名 显示      更新时间:2023-09-26

我正在尝试从www.domain.comwww.domain.com/fdfds/fsdfd.phpdomain.com 获取domain.com

var parts = location.hostname.split('.');
var subdomain = parts.shift();
var upperleveldomain = parts.join('.');
alert(upperleveldomain);

然而,如果域有www.,它就可以工作,但没有www.它就不能工作。它只给我com

如何解决此问题?有什么不同的建议吗?

正如Billy Moon在这里建议的那样,只需将主机名的"www"部分替换为一个空字符串,您(大概)就更接近您想要的:

var strLocation = location.host.replace('www.','');
alert(strLocation);

问题是,您将域名按句点字符拆分为一个数组,然后丢弃该数组的第一部分。如果URL是example.org,则表示主机名部分,如果URL是www.example.org,则表示www部分。

在所有情况下都使用parts.shift();,它会删除数组的第一个元素。如果第一个元素包含字符串www,您只需要删除它,所以您只需要检查该条件,并且只有当www存在时才需要检查shift()

var parts = location.hostname.split('.');
if(parts[0] === "www") {
    parts.shift();
}
var upperleveldomain = parts.join('.');
alert(upperleveldomain);

如果你愿意的话,你也可以用正则表达式来解决这个问题,但你已经想出了一个非常简单的方法,只需调整一下就可以了。

一个选项可以是(编辑代码):

var parts = location.hostname.split('.');
if(parts[0].localeCompare("www") == 0)
    var subdomain = parts.shift();
var upperleveldomain = parts.join('.');
alert(upperleveldomain);

或者你可以用一个空字符串代替www.:

var newHostname = location.hostname.replace("www.","");
alert(newHostname);
相关文章: