2010-09-26 413 views
1

當用戶進入到基座域http://www.domain.com/http://domain.com/
頁面必須被重定向到的http:// WWW。 domain.com/#!/news.html如何正確處理javascript重定向?

我的意思是這樣的:

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)解決它?

回答

3

使用上location解析-URL屬性,如pathnamehostnamesearchhash,而不是試圖亂用href

if (location.pathname==='/' && location.hash==='') 
    location.hash= '#!/news.html'; 

尤其是,頁面提供了兩個不同的域。

這是最好的搜索引擎優化穿上只有一個特定的主機您的網站,並重定向任何其他相關的主機名到正規主機名。讓HTTPD配置擔心域名而不是您的應用。例如,如果你選擇了www.domain.com是你的正規主機名,在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> 

其他Web服務器建立重定向的不同方式。如果您無法訪問Apache配置並且僅限於.htaccess(唉),那麼您必須使用mod_rewrite根據主機名執行條件重定向。

+0

謝謝,您的解決方案可行!我注意到服務器解決方案,期待改變這一點。 – Thomas 2010-09-26 14:01:07

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; 
+0

這工作,謝謝。這個網站有兩個域名,domain.com和domain1.com。現在我會爲這兩個域做兩次這個片段。或者有更好的方法來做到這一點? – Thomas 2010-09-26 11:34:46

+0

@thomasz我已經更新了我的答案,試試看吧=) – 2010-09-26 12:11:11

+0

@Avinash感謝您的努力:)這似乎是一個非常好的解決方案,但不幸的是'document.domain'將無法正常工作。地址不會改變,服務器的響應狀態是404。在任何js被加載之前,代碼片段被觸發,是否有更多的東西被'document.domain'使用? – Thomas 2010-09-26 12:37:11