301、302都是在HTTP中可以跳轉網頁的一種方法(區別爲301是永久跳轉、而302是臨時跳轉),而使用範圍也非常廣泛,例如當我們使用了新的域名,爲了訪客的體驗和SEO優化,我們有時候就會使用301來對舊網站進行跳轉。今天,「暢想資源」就來教大家如何在Nginx中實現301、302跳轉之方法,而且這種方法還是可以跳轉完整鏈接的哦!
實現後的效果
現假定舊域名爲「www.domain-old.com」、新域名爲「www.domain-new.com」,在加入本文所教的301/302跳轉方法後可以實現以下效果:
- 訪問「http://www.domain-old.com/」可以直接跳轉至「http://www.domain-new.com/」
- 訪問「http://www.domain-old.com/test/」可以直接跳轉至「http://www.domain-old.com/test/」
- 【僅限301跳轉】搜尋引擎可正常搜錄跳轉後的結果(例如「http://www.domain-old.com/test/」等)
教學
1、首先登入網站伺服器的SSH,然後使用 vim
或其它編輯命令進入你的Nginx的 .conf
文件
提示:該類文件通常位置爲「/etc/nginx/nginx.conf」或者「/etc/nginx/vhost/」下的虛擬主機文件(一般以「[你的網站域名].conf」命名)
2、在進入編輯後,首先於 server_name
處加入原網站(需跳轉的網站)的域名(例如「www.domain-old.com」)
1 2 3 4 5 6 7 8 9 |
server { listen 80; server_name www.domain-new.com www.domain-old.com; #server_name end index index.php; #index end #---OTHER OPTIONS--- } |
3、然後於 server_name
的下方添加以下代碼,注意將 www.domain-new.com
和 www.domain-old.com
分別替換爲你的新舊網站域名:
注意: rewrite
最後部分分兩種不同的代碼,即 permanent
代表「301永久跳轉」,而 redirect
代表「302臨時跳轉」,只需選擇其一使用即可!兩種跳轉在展現方式上無任何區別,但是302更容易被搜尋引擎視爲SPAM,而301則不會有這些問題!
1 2 3 4 5 6 7 8 9 10 11 12 13 |
server { listen 80; server_name www.domain-new.com www.domain-old.com; #server_name end if ($host ~* www.domain-old.com){ rewrite ^/(.*)$ http://www.domain-new.com/$1 permanent; #permanent 301 #rewrite ^/(.*)$ http://www.domain-new.com/$1 redirect; #redirect 302 } index index.php; #index end #---OTHER OPTIONS--- } |
4、現在將原域名解析到目前的伺服器上,然後我們的301/302跳轉也可以正常使用啦!
參考
凱凱的個人調試和結果
歷史上的今天
2013年:360網站衛士和安全寶同時改版(16條評論)