役立つ情報
登録日: 2025-03-17   最終更新日: 2025-03-21

Laravel で robots.txt を出力する方法について

Laravel で robots.txt を動的に出力する方法がいくつかありますので紹介します。

ルーティングを利用して robots.txt を生成する方法

Laravel のルーティングを利用して robots.txt を動的に生成する方法です。

ルートを定義
routes/web.php に以下を追加します。


use Illuminate\Support\Facades\Route;
use Illuminate\Http\Response;

Route::get('/robots.txt', function () {
    $content  = "User-agent: *".PHP_EOL;
    $content .= "Disallow: /example/".PHP_EOL;
    return response($content)
                ->header('Content-Type', 'text/plain');
});

これで robots.txt が /robots.txt にアクセスした際に表示されます。

ビューを利用して robots.txt を生成する方法

ビューを使って robots.txt を出力する方法です。

ルートを定義

routes/web.php に以下を追加


Route::get('/robots.txt', function () {
    return response()->view('robots')
                ->header('Content-Type', 'text/plain');
});

ビューファイルを作成

resources/views/robots.blade.php を作成し、以下を記述します。


User-agent: *
Disallow: /example/
@php
if (config('app.env') !== 'production') {
    echo "Disallow: /\n";
}
@endphp

メリット

  • 環境 (.env の APP_ENV) に応じて robots.txt の内容を変えられる。
  • robots.blade.php を編集するだけで簡単に変更できる。

コントローラーとビューを利用して robots.txt を生成する方法

複数の sitemap.xml などの定義を動的に出力する方法です。
URL の階層が動的に変化したりする場合に有効な方法です。

ルートを定義
routes/web.php に以下を追加します。


use App\Http\Controllers\RobotsTxtController;

Route::get('/robots.txt', [RobotsTxtController::class,'robotsTxt'])
        ->name('robotsTxt');

コントローラを定義
app\Http\Controllers\RobotsTxtController.php


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class RobotsTxtController extends Controller
{
    public static function robotsTxt() : object
    {
        return response()->view('robotsTxt')
                         ->header('Content-Type', 'text/plain');
    }
}

ビューを定義 resources/views/robotsTxt.blade.php


User-agent: *
Disallow: /example
Sitemap: {{ url('/sitemap.xml') }}

静的ファイルを直接配置

単に public/robots.txt にファイルを置くだけでも動作しますが、動的な管理ができなくなります。

public/robots.txt を作成


User-agent: *
Disallow: /admin/

メリット:

  • 最もシンプルな方法
  • Laravelのルーティングを通さずに直接アクセス可能
  • キャッシュ問題が発生しにくい

デメリット:

  • 環境ごとの制御ができない
  • robots.txt を変更するたびにサーバーへアップロードが必要

表示確認

以下のURLを入力すると robots.txt が表示されてば Ok です。

http(s)://{各サイトのドメイン}/robots.txt


Copyright 役立つ情報.net