勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

CodeIgniter4で特定のページにアクセスがあった際に301リダイレクトさせる方法

  PHP CodeIgniter

CodeIgniter4で特定のページにアクセスがあった際に301リダイレクトさせたい。調べたところ.htaccessファイルでの対応ではなく、redirect()関数に引数を指定することで対応できる模様。以下にソースコード及びリファレンスのメモ。

 

Redirect()関数

リファレンス

https://codeigniter4.github.io/userguide/outgoing/response.html#redirect-status-code

 

ソースコード

/app/Config/Routes.php

#301リダイレクトテスト
$routes->add('/redirect_test', 'Test_Controller::index');

/app/Controllers/Test_Controller.php

<?php
namespace App\Controllers;

class Test_Controller extends BaseController
{
    public function index()
    {
        return redirect()->to('/', 301);
    }
}

「https://test.com/codeigniter4/redirect_test」をブラウザから開くと「https://test.com/codeigniter4/」に301リダイレクトされるのが確認できる筈。

 

その他

ステータスコードを指定しない場合

上記のソースコードだと「redirect()->to('/', 301);」とステータスコードを301に指定しているが、指定しない場合は302リダイレクトされた。また、リファレンスに以下案内がある。

GETリクエストのデフォルトのHTTPステータスコードは 302 です。ただし、HTTP/1.1 を使用する場合は、以降では、POST/PUT/DELETE リクエストには303が使用され、その他すべてのリクエストには 307 が使用されます。

ステータスコード「301 / 302 / 303 / 307」の違いについて

301 / 302しか知らないので調べたところ以下のような違いがあった。

  • 301 → 恒久的なリダイレクト
  • 302 → 一時的なリダイレクト
  • 303 → 一時的なリダイレクト。尚且つリダイレクト先にはGETメソッドでリダイレクト
  • 307 → 一時的なリダイレクト。尚且つリダイレクト先にはリダイレクト元のメソッド(GET / POST等)を引き継いでリダイレクト

 - PHP CodeIgniter

  関連記事

CodeIgniter4でのメール送信方法(テキスト・HTMLメール)

CodeIgniter4.4.4でテキストメール及びHTMLメールを送信したい。 ...

Codeigniter4で独自・外部ライブラリの作成と呼び出し方法

Codeigniter4で独自ライブラリを作成し、コントローラー側で呼び出したい ...

CodeIgniter4でCronを実行する方法

CodeIgniter4.4.4で特定の処理をCronで自動実行させたい。以下に ...

CodeIgniter4 & jQueryを用いて同一サイト内でajax通信する方法

CodeIgniter4.4.4 & jQueryを用いて同一サイト内で ...

Codeigniter4でMySQLに接続しCRUD操作する方法

Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任 ...