1

我有以下 JavaScript,当 url (window.location) 不包含www. javascript执行

var windowloc = window.location; // http://mywebsite.com/
var homeurl = "http://mywebsite.com/";
if(windowloc==homeurl){
//JavaScript IS EXECUTED
}

如果确实如此,则不执行javascript 。

var windowloc = window.location; // http://www.mywebsite.com/
var homeurl = "http://mywebsite.com/";
if(windowloc==homeurl){
//JavaScript is NOT executed.
}

如何通过允许 JavaScript 接受带有和不带有 www 的 url (window.location) 来克服这个问题。

4

5 回答 5

2

使用这样的代码查看域中是否包含 www.mywebsite.com:

if (window.location.href.indexOf("//www.mywebsite.com/") != -1) {
     // code to execute if it is www.mywebsite.com
} else {
     // code to execute if it is not www.mywebsite.com
}

或者,您可以像这样仅使用 window.location 的主机名部分来检查“www.”:

if (window.location.hostname.indexOf("www.") != -1) {
     // code to execute if it is www. something
} else {
     // code to execute if it is not www. something
}

或者,如果您想准确检查您的整个域,您可以这样做:

if (window.location.hostname === "www.mywebsite.com" {
     // code to execute if it is www.mywebsite.com
} else {
     // code to execute if it is not www.mywebsite.com
}
于 2011-12-23T23:37:23.193 回答
1

您可以使用正则表达式来克服这一点,因为我相信其他答案会提供。但是,搜索引擎优化 (SEO) 的最佳做法是强制您http://mywebsite.com/执行永久重定向,http://www.mywebsite.com/因为 Google 等搜索引擎会考虑 www。和 www-less 版本是两个独立的网站。

那么您将不需要两个单独的条件,因为您的 url 将始终是 www。版本。

于 2011-12-23T23:37:17.127 回答
0
if (window.location.href.indexOf("://www") === -1) {
    // "www" excluded
} else {
    // other stuff
}

将代码示例编辑为更具体

于 2011-12-23T23:35:57.950 回答
0
if(window.location.href.indexOf('mywebsite.com')!= -1){
   //do stuff
}
于 2011-12-23T23:38:02.540 回答
0

使用对象的hostname属性location来确定您在哪个地址下获得服务:

if (location.hostname==='mywebsite.com')
    // do something

location和其他拥有地址的对象(如链接)具有 、 和 等属性,hostname并为您提供已解析的 URL 片段,因此您不必自己尝试分离 URL 字符串。不要只在位置字符串中查找是否存在,因为它可能在字符串中不是主机名的其他位置。pathnamesearchhashwww.

但是 +1 贾斯汀的回答:如果您尝试将替代地址(例如非 www 地址)重定向到规范地址,那么正确的方法是使用 HTTP 301 重定向,而不是与 JavaScript 有任何关系。这通常会在服务器级别进行配置,例如对于 Apache,您可能会Redirect.htaccess.

于 2011-12-24T00:01:38.733 回答