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条评论)
冒昧問一下,右側的那五個鏈接真的不是被黑掛上去的...?我在好多博客上看到叻額。很驚訝。。
301对于seo 也很重要啊
太帅了,正需要这个呢
小孩纸,牛逼啊
怎么不用dns解析那的301/302
文章不错
学到东西了
貌似很麻烦 我的主机面板支持跳转~
那是 肯定不折腾~
順便問問,你用的什麼主機面板啊~

Easypanel
不错,继续加油
学习下
其实301还是用过的,302 临时,如果用的多的话, 是不是不好。
我也是聽說302不太好~

前來支持一下~

我以为你在Facebook里能插入代码呢,进去一看原来也是文章链接呀,FB的编辑器真太烂了,我的乱成一团了都,相比之下还是QZone好~
一直用虚拟主机,没用过NGINX,先学习了~
感觉有时候东西多了,就发现挺混乱的
你是在說我的網站麼?

你一说还真觉得有点,不过301和302一多了就乱了吧
不错嘛,来个沙发了。