如何正确处理javascript重定向?

时间:2010-09-26 11:21:01

标签: javascript jquery redirect dns

当用户访问基本域 http://www.domain.com/ http://domain.com/ 时, 该页面必须重定向到 http://www.domain.com/#!/news.html

我的意思是这样的:

if (window.location.href("http://www.domain.com/") || window.location.href("http://domain.com/")) {
    window.location.replace("http://domain.com/#!/news.html");
}

这不起作用。特别是,页面提供在两个不同的域上 任何想法如何在漂亮的Javascript或jQuery(使用jQuery 1.4.2)中解决它?

2 个答案:

答案 0 :(得分:4)

var loc =  window.location.href;

if(loc == 'http://domain.com' || loc == 'http://www.domain.com') {
  window.location.href = 'http://domain.com/#!/news.html';
}

修改

var d   = window.location.hostname;
var loc = window.location.href;
if(loc == d) { 
  window.location.href = d +'/#!/news.html';
}

document.domain真的挽救了我的生命来回答你的问题,我试图用正则表达式回答你的问题,我的模式无法与现有的可能性相匹配。 好像我真的需要回去学习正则表达式:)

修改

var d = window.location.hostname;

答案 1 :(得分:3)

使用location上的已解析网址属性,例如pathnamehostnamesearchhash,而不是试图弄乱{{1} }}:

href
  

特别是,该页面在两个不同的域上提供。

SEO最好只将您的网站放在一个特定的主机名上,并将任何其他关联的主机名重定向到该规范主机名。让HTTPD配置担心域而不是您的应用。例如,如果您选择if (location.pathname==='/' && location.hash==='') location.hash= '#!/news.html'; 作为规范主机名,则可以在Apache配置中说:

www.domain.com

其他Web服务器有不同的方法来设置重定向。如果您无法访问Apache配置,并且您只能使用<VirtualHost *:80> ServerName www.domain.com DocumentRoot ... ... other settings for the main site ... </VirtualHost> <VirtualHost *:80> ServerName domain.com ServerAlias someotherdomain.org ServerAlias www.someotherdomain.org Redirect permanent / http://www.domain.com/ </VirtualHost> (ugh),那么您必须使用.htaccess根据主机名进行条件重定向。