【Laravel】.htaccessでURLのエイリアスを設定する方法を解説

スポンサーリンク
この記事は約4分で読めます。

通常、Laravelではルートの設定を routes/web.php で管理するのが基本ですが、サーバーサイド(Apache)でURLの処理をしたほうがシンプルで高速な場合もあります。特に、Laravelのルーティングを通さず、軽量に処理を済ませたいときは .htaccess が有効です。

この記事では、Laravel環境下で .htaccess を使ってURLのエイリアス(別名URLやリダイレクト)を設定する方法を、実例を交えながら丁寧に解説していきます。

Laravelと.htaccessの関係

Laravelはデフォルトで public/ フォルダを公開ディレクトリとし、その中にある .htaccess ファイルを通じてApacheのリクエストを制御します。

この .htaccess ファイルにはすでにLaravel用のルーティング処理が記述されていますが、追加のRewriteルールを記述することで、URLのエイリアスを設定することが可能です。

注意:この方法は Apache を使用している場合に限られます。Nginx など他のWebサーバーを使っている場合は、設定方法が異なります。

Rewriteルールの基本的な書き方

以下のように、.htaccess にリダイレクトやエイリアスのルールを追加できます。

例:/old-page を /new-page にリダイレクト

RewriteEngine On
RewriteRule ^old-page$ /new-page [L,R=301]

各要素の意味

  • RewriteEngine On:Rewriteを有効にする
  • ^old-page$:アクセスされたURLパス(正規表現)
  • /new-page:転送先のURL
  • [L,R=301]
    • L:このルールで処理を終了
    • R=301:301リダイレクト(恒久的な移動)

この設定を .htaccess に追加しておけば、たとえば https://example.com/old-page にアクセスすると、自動で https://example.com/new-page に転送されるようになります。

Laravelと共存させるための注意点

Laravelの .htaccess はすでにルーティングを制御する設定があるため、Rewriteルールは既存のルールの前に記述することが大切です。そうしないと、Laravelのルーティングが優先されてしまい、.htaccessでのエイリアスが無効になります。

また、.htaccess の編集は public/ フォルダ内のファイルに対して行ってください。サーバーのルートディレクトリにはLaravelの本体ファイルがあり、通常は .htaccess の対象外です。

応用:複雑な条件付きリダイレクト

クエリパラメータ付きのリダイレクト

RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^product$ /new-product? [L,R=302]
  • RewriteCond でクエリの条件を指定
  • 302 は一時的なリダイレクト(変更される可能性がある場合に使用)

ドメイン直下へのアクセスを特定ページに転送

RewriteEngine On
RewriteRule ^$ /landing-page [L]
  • トップページ(/)にアクセスしたら /landing-page に転送

まとめ

.htaccess を使えば、Laravelの外側でURLを柔軟に制御することができます。特に以下のような場面で便利です。

  • SEO目的で旧URLを新URLに転送したいとき
  • Laravelアプリのルートを汚さずに静的なリダイレクトを追加したいとき
  • 軽量なリダイレクト処理をサーバー側で完結させたいとき

LaravelとApacheの連携をしっかり理解していれば、.htaccessを活用することでアプリ全体の運用がより安定・柔軟になります。細かいところですが、確実に押さえておくとプロジェクトの完成度が変わってきます。

なお、「こういったWebの知識を仕事に活かしたい」「そろそろ現場でスキルを試してみたい」と感じている方には、以下の転職サイトもおすすめです。

Laravel
スポンサーリンク
なんくるをフォローする

コメント

タイトルとURLをコピーしました