カテゴリ: Go言語 更新日: 2025/11/15

Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説

Go言語のリダイレクト処理を行う方法(http.Redirect)
Go言語のリダイレクト処理を行う方法(http.Redirect)

先生と生徒の会話形式で理解しよう

生徒

「先生、Webアプリでページを自動的に別のURLに移動させたいんですが、Go言語でどうやるんですか?」

先生

「その場合はhttp.Redirectを使うと簡単です。ブラウザに『ここに移動してください』と指示を出すイメージです。」

生徒

「リダイレクトって、どんな場面で使うんですか?」

先生

「例えばログイン後にトップページに移動させたり、古いURLから新しいURLに案内するときに使います。」

生徒

「なるほど、具体的な書き方を教えてください!」

1. http.Redirectの基本構文

1. http.Redirectの基本構文
1. http.Redirectの基本構文

Go言語のhttp.Redirectは、net/httpパッケージで提供されており、次の3つの引数を取ります。

  • http.ResponseWriter:レスポンスを書き込むためのオブジェクト
  • *http.Request:現在のリクエスト情報
  • url string:移動先のURL
  • status int:HTTPステータスコード(例:301, 302)

http.Redirect(w, r, "/newpage", http.StatusFound) // 302リダイレクト

この例では、ブラウザに「/newpageへ移動してください」と指示しています。ステータスコードhttp.StatusFoundは302で、一時的なリダイレクトを意味します。

2. 一時的リダイレクトと恒久的リダイレクト

2. 一時的リダイレクトと恒久的リダイレクト
2. 一時的リダイレクトと恒久的リダイレクト

リダイレクトには2種類あります。

  • 一時的リダイレクト(302):一時的にURLを変更する場合に使用
  • 恒久的リダイレクト(301):完全にURLが変わった場合に使用

http.Redirect(w, r, "/permanent", http.StatusMovedPermanently) // 301リダイレクト

恒久的リダイレクトは検索エンジンにも伝わるため、SEO対策としても重要です。

3. 実際にリダイレクト処理を作る例

3. 実際にリダイレクト処理を作る例
3. 実際にリダイレクト処理を作る例

package main

import (
    "fmt"
    "net/http"
)

func oldHandler(w http.ResponseWriter, r *http.Request) {
    // 古いページから新しいページにリダイレクト
    http.Redirect(w, r, "/new", http.StatusMovedPermanently)
}

func newHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "新しいページに移動しました!")
}

func main() {
    http.HandleFunc("/old", oldHandler)
    http.HandleFunc("/new", newHandler)
    http.ListenAndServe(":8080", nil)
}

このコードでは、/oldにアクセスすると自動的に/newに移動し、移動先のページ内容が表示されます。

4. リダイレクトを使うときの注意点

4. リダイレクトを使うときの注意点
4. リダイレクトを使うときの注意点
  • リダイレクトはHTTPレスポンスのヘッダーで行うため、本文を書き込む前にhttp.Redirectを呼ぶ
  • 無限リダイレクトを避けるため、リダイレクト先を正しく設定する
  • ステータスコードを正しく選択する(301か302か)
  • セキュリティ面では、ユーザー入力を直接URLに使わない

5. まとめの前に応用例

5. まとめの前に応用例
5. まとめの前に応用例

ログイン処理後のリダイレクトや、古いブログ記事のURLを新しいURLに誘導する場合など、実務でもよく使われます。Go言語のhttp.Redirectを正しく理解しておくと、Webアプリのユーザー体験を向上させられます。

カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Swift入門ガイド|基本構文と書き方をマスターしよう
No.3
Kotlin・Go・Swift記事の人気No3
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.8
Kotlin・Go・Swift記事の人気No8
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎