什麼是 HTTP 狀態碼?

HTTP 回應狀態碼 用於表示特定的 HTTP 請求是否已成功完成。狀態碼種類繁多,但只有少數與 SEO 相關。

讓我們來看看這些重要的狀態碼。

200

HTTP 200 OK 成功狀態回應碼表示請求已成功完成。

若要使頁面能被 Google 索引,該頁面必須回傳狀態碼 200。這通常是您希望頁面具備的狀態,以便獲得自然流量。當 Next.js 成功渲染頁面時,預設會設定此狀態碼。

301/308

HTTP 301 Moved Permanently 重新導向狀態回應碼表示請求的資源已永久移至目標 URL。

這是一種永久重新導向。一般來說,這是最常用的重新導向類型。

重新導向可能出於多種原因,但主要用途是表示 URL 已從位置 A 移至位置 B。重新導向能確保當內容移動時,您不會流失現有或潛在客戶,同時讓爬蟲程式能繼續索引您的網站。

注意:Next.js 的 永久重新導向 預設使用 308 而非 301,因為 308 是較新版本且被認為是更好的選擇。

這兩種狀態碼的主要區別在於,301 允許將請求方法從 POST 變更為 GET,而 308 則不允許。

您可以在 Next.js 中透過在 getStaticProps() 函式中回傳重新導向而非 props 來觸發 308 重新導向。

//  pages/about.js
export async function getStaticProps(context) {
  return {
    redirect: {
      destination: '/',
      permanent: true, // 觸發 308
    },
  };
}

您也可以在 next.config.js 中設定的重新導向使用 permanent: true 鍵值。

//next.config.js
 
module.exports = {
  async redirects() {
    return [
      {
        source: '/about',
        destination: '/',
        permanent: true, // 觸發 308
      },
    ];
  },
};

302

HTTP 302 Found 重新導向狀態回應碼表示請求的資源已暫時移至目標 URL。

在多數情況下,302 重新導向應改為 301 重新導向。但若您暫時將使用者重新導向至特定頁面(例如促銷頁面)或基於位置進行重新導向,則可能例外。

404

HTTP 404 Not Found 用戶端錯誤回應碼表示伺服器找不到請求的資源。

如前所述,已移動的頁面應使用 HTTP 301 狀態碼重新導向至新位置。若未如此處理,URL 可能會回傳 404 狀態碼。404 狀態碼本身並非壞事,因為當使用者造訪不存在的 URL 時,這正是預期的結果。但若您的頁面頻繁出現此錯誤,可能會導致搜尋排名不佳。

Next.js 會自動為應用程式中不存在的 URL 回傳 404 狀態碼。

在某些情況下,您可能也需要從頁面手動回傳 404 狀態碼。您可以透過以下方式取代 props 來實現:

export async function getStaticProps(context) {
  return {
    notFound: true, // 觸發 404
  };
}

您可以透過建立 pages/404.js建立自訂 404 頁面,該頁面會在建置時靜態生成。

範例:

// pages/404.js
export default function Custom404() {
  return <h1>404 - 找不到頁面</h1>;
}

410

HTTP 410 Gone 用戶端錯誤回應碼表示目標資源在原始伺服器上已永久無法存取。

此狀態碼不常使用,但若您刪除網站上不再存在的內容,可能需要檢查此狀態碼。

適合使用 HTTP 410 Gone 的範例包括:

  • 電子商務:永久下架的商品。
  • 論壇:使用者刪除的討論串。
  • 部落格:從網站移除的部落格文章。

此狀態碼會告知爬蟲程式不應再嘗試爬取此內容。

500

HTTP 500 Internal Server Error 回應碼表示伺服器遇到意外狀況,導致無法完成請求。

Next.js 會在應用程式發生未預期的錯誤時自動回傳 500 狀態碼。您可以透過建立 pages/500.js建立自訂 500 錯誤頁面,該頁面會在建置時靜態生成。

範例:

// pages/500.js
export default function Custom500() {
  return <h1>500 - 伺服器端發生錯誤</h1>;
}

503

HTTP 503 Service Unavailable 伺服器錯誤回應碼表示伺服器暫時無法處理請求。

建議在網站停機且預期會長時間無法運作時回傳此狀態碼。這能避免長期影響搜尋排名。

On this page