如何把網站轉到另一個網址?介紹各種轉址方法。
網域名稱轉址(英語:URL redirection,或稱網址重新導向或URL重定向),是指當使用者瀏覽某個網址時,將他導向到另一個網址的技術。
目錄
轉址的好處
轉址有兩大好處:
- 簡化網址
- 留住舊訪客
為了方便分享,你可以使用短網址服務(如 Bitly、PicSee 皮克看見 等)縮短長網址,而且註冊後能查看點擊報告,追蹤成效。
不過短網址服務通常由英文字母及數字隨機組成,較難記住。如果你擁有自己的域名,建議使用 DNS 轉址。例如:
我的 YouTube 頻道網址是
https://www.youtube.com/channel/UCVcY0oInOCDO0QOKgj7g7WQ
這麼長的網址,我也不記得是甚麼。於是我加入子網域(Subdomain):youtube,把 http://youtube.alyssachan.space 轉址到上述長網址,簡潔方便。
轉址類型:常駐(301) VS 暫時(302)
常見的轉址類型主要分為常駐(301) VS 暫時(302),3XX 是 HTTP 狀態碼的一種,意義請參考下表:
| HTTP 狀態碼 | 狀態 |
|---|---|
|
200 | OK 請求已成功,請求所希望的回應頭或資料體將隨此回應返回。 |
|
301 | Moved Permanently 被請求的資源已永久移動到新位置。 |
|
302 | Moved Temporarily 請求的資源現在臨時從不同的URI回應請求。 用戶端應當繼續向原有位址傳送以後的請求。 |
|
404 | Not Found 請求失敗,找不到網頁。 |
|
500 | Internal Server Error 伺服器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。 |
|
503 | Service Unavailable 由於臨時的伺服器維護或者過載,伺服器當前無法處理請求。 |
由此可見,如果是永久轉址,請選擇 301;而假如是特別情況臨時轉址,將來會繼續使用舊網址,則選擇 302。
轉址的方法
1. 利用 .htaccess 轉址(到新對應頁面,需 Apache 伺服器)
若新舊網站的結構一致,可使用此方法,做到一對一的轉址,即
http://olddomain.com/page-1.html → http://newdomain.com/page-1.html
建立「.htaccess」文字檔,或在已有的 .htaccess 中加上:
RewriteEngine on
RewriteRule (.*) http://newurl.com/\ [R=301,L]
把 http://newurl.com 修改為新網址,如臨時轉址,請把 R=301 改為 R=302。
注意!如已有 .htaccess 檔,而你又並不熟識使用方法,請先做好備份再修改,.htaccess 出錯會導致伺服器錯誤(500)。
然後把改好的 .htaccess 上傳到網站的根目錄即可。如遇上在 Windows 無法建立以 「.」開首的檔案名稱,先隨便改名,上傳後再到伺服器修改。
2. 利用 HTML 轉址(到新首面)
在 <head> 與 </head> 之中加入 meta tag 以重新整理到新網站的首頁,即
http://olddomain.com/page-1.html → http://newdomain.com/
<meta http-equiv="refresh" content="0; url=http://newurl.com" />
<link rel="canonical" href="http://newurl.com" />
<meta> 中的 content 表示:在 0 秒後重新整理到 http://newurl.com。<link> 中的 canonical 表示標準網址。如臨時轉址時,可不加此行。
3. 利用 PHP 轉址(到新首面)
在第一行使用 header() 函數,定義路徑。會新整理到新網站的首頁,即
http://olddomain.com/page-1.html → http://newdomain.com/
<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://newurl.com/');
exit();
>
如臨時轉址,可不用加 header('HTTP/1.1 301 Moved Permanently'); 那一行的狀態。
4. 利用 JavaScript 轉址(到新首面)
原則上在 HTML 網頁任何地方貼上下列語法都可轉址,但放在開頭會比較有效率。同樣會新整理到新網站的首頁,即
http://olddomain.com/page-1.html → http://newdomain.com/
<script>document.location.href="http://newurl.com";</script>
簡短寫法可不用加 document. 宣告文件。
5. 例子:Blogger 轉址
站內轉址
如需在站內轉址,例如把永久連結(Permalink)由 http://my.blogspot.com/2017/01/post-1.html 改為 http://my.blogspot.com/2017/01/my-favorite-designs.html,以優化網址結構,可使用 Blogger 設定中的重新導向,把流量導去新網址。
- 前往 [設定] > [搜尋偏好設定]
- 在 [錯誤與重新導向] 中,按下 [自訂重新導向網址] 該行的 [編輯]
- 按 [新增重新導向網址](如首次新增,系統會自動省略此步驟)
- 在 [來源網址:] 一欄,輸入舊網址:
/2017/01/post-1.html - 在 [目標網址:] 一欄,輸入新網址:
/2017/01/my-favorite-designs.html - 剔選 [永久性:] 旁邊的 checkbox
- 按 [儲存]
- 按 [儲存變更]
- 重覆第 2–8 步,並於第 4 步中,在舊網址後面加上
?m=1,即:/2017/01/post-1.html?m=1。以確保手機版網頁也能重新導向至新網址
站外轉址
如果你有需要把舊的 Blogger 網誌轉到另一個新 Blogger 網址首頁,請把以下編碼複製到 <head> 的後面,並把 http://newurl.com 修改為新網址。
<script>
var d='<data:blog.url/>';
d=d.replace(/.*\/\/[^\/]*/, '');
location.href = 'http://newurl.com';
</script>
此外也可使用 HTML 方法把 Blogger 轉址。
一對一轉介 Blogger 文章
如有時間,當然做一對一的轉介最好。同樣把以下編碼複製到 <head> 的後面,並修改網址。
<!-- 轉介網址格式 -->
<b:if cond='data:blog.url == "舊網址"'>
<meta content='0;url=新網址' http-equiv='refresh'/>
</b:if>
<!-- Refer Home Page to New Address -->
<b:if cond='data:blog.url == "http://old.blogspot.com/"'>
<meta content='0;url=http://new.blogspot.com/' http-equiv='refresh'/>
</b:if>
<!-- Refer Posts to New Address -->
<b:if cond='data:blog.url == "http://old.blogspot.com/2017/01/post-1.html"'>
<meta content='0;url=http://new.blogspot.com/2017/01/post-1.html' http-equiv='refresh'/>
</b:if>
<b:if cond='data:blog.url == "http://old.blogspot.com/2017/01/post-2.html"'>
<meta content='0;url=http://new.blogspot.com/2017/01/post-2.html' http-equiv='refresh'/>
</b:if>
注意!可能需要使用 https 及加上?m=1,照顧不同 Blogger 版本。
6. 例子:WordPress轉址
如果轉用 WordPress,可以安裝 Redirection 外掛。
建議在 Options 中的 Default query matching 選擇 Ignore and pass all query parameters,因為預設的 Exact match 會導致加了網址參數的轉介(例如 ?utm、?fbclick)出現 404 錯誤。
如果從 Blogger 搬到 WordPress,需要解決 ?m=1 導致 404 錯誤。方法是在 .htaccess 中 #BEGIN WordPress 下面加上以下編碼:
# BEGIN fixing Blogger ?m=1 issue in WordPress
RewriteEngine On
RewriteCond %{QUERY_STRING} m=1
RewriteRule (.*) /\? [R=301,NE,L]
# END fixing Blogger ?m=1 issue in WordPress
轉址工具
有個 301 Redirect Code Generator 工具可以幫助產生不同種類的轉址語法,選項有:
| 轉址類型 | 伺服端/客戶端 | 舊網頁檔案類型 | 舊網址伺服器類型 | 是否永久301重新導向? |
|---|---|---|---|---|
| PHP | 伺服端 | .php | Apache / Linux | 是 |
| ASP | 伺服端 | .asp | IIS / Windows | 是 |
| ASP.NET | 伺服端 | .aspx | IIS / Windows | 是 |
| Apache .htaccess | 伺服端 | 全部 | Apache / Linux | 是 |
| IIS web.config | 伺服端 | 全部 | IIS / Windows | 是 |
| HTML meta tag | 客戶端 | .html | 全部 | 否 |
| Javascript | 客戶端 | .html | 全部 | 否 |
| jQuery | 客戶端 | .html | 全部 | 否 |
減少搬站對搜尋排名的影響:使用網址變更工具(Google Search Console)
改網址或多或少會影響SEO。如可使用 .htaccess 等永久 301 重新導向方法,記得到 Search Console 提交變更網址,以便 Google 為您的新網址建立索引,減少因搬站對目前的 Google 搜尋結果排名的影響。詳細做法請參考「使用網址變更工具 – Search Console 說明」。
拍手👏
請問~~如果我要製作Blogger變成網站式的,舉例:關於我-必須先要建置文章在連結過去?
是的,先建立文章再設定目錄
THX!!