[教學] Nginx 301 Redirect 寫法,讓搜尋引擎正確收錄網站網址



Nginx是一個蠻受歡迎的網頁伺服器,因為可以附載比較多的瀏覽/連線數,所以非常多大型網站使用它,小編之前寫過幾篇有關Nginx的文章,可以參考Nginx標籤。這篇要說明的是,如何設定Nginx的vhost檔案,讓指定網址301重新導向到新的網址,或讓http的流量強制轉換到https,或者是反過來讓https轉換到http,或者是讓這個網站的所有流量轉到同一個頁面,但這個方法僅適合永久轉址使用,如果您只是網站維護要暫時轉址,請使用302轉址,才不會造成搜尋引擎誤判,導致對SEO的不利。

Nginx 301 Redirect 寫法
您的vhost檔案可能長這樣,它會監聽80 Port的流量,是一個很標準的vhost寫法。

server {
                listen       80;
                server_name orztw.com www.orztw.com;
                index index.html index.htm index.php;
                root  /home/orztw.com;
                access_log  /home/wwwlogs/orztw.com.log  orztw.com;
}
1
2
3
4
5
6
7
server {
                listen       80;
                server_name orztw.com www.orztw.com;
                index index.html index.htm index.php;
                root  /home/orztw.com;
                access_log  /home/wwwlogs/orztw.com.log  orztw.com;
}


如果您要讓這個網站的流量全部導向到另外一個頁面,可以增加下面這段在 server {} 裡面。

// http://domain.com/index.html 可以換成您的網址
rewrite        ^ http://domain.com/index.html permanent;
1
2
// http://domain.com/index.html 可以換成您的網址
rewrite        ^ http://domain.com/index.html permanent;


如果您是換網址,需要導向到另一個網址,且後面路徑都相同,請增加下面這段在 server {}裡面。

rewrite        ^ http://$server_name$request_uri? permanent;
1
rewrite        ^ http://$server_name$request_uri? permanent;


如果您只有要將一部分的路徑做轉址,可以將rewrite那段寫在location {}裡面!