通常、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]
各要素の意味
この設定を .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]
ドメイン直下へのアクセスを特定ページに転送
RewriteEngine On
RewriteRule ^$ /landing-page [L]
まとめ
.htaccess
を使えば、Laravelの外側でURLを柔軟に制御することができます。特に以下のような場面で便利です。
LaravelとApacheの連携をしっかり理解していれば、.htaccessを活用することでアプリ全体の運用がより安定・柔軟になります。細かいところですが、確実に押さえておくとプロジェクトの完成度が変わってきます。
なお、「こういったWebの知識を仕事に活かしたい」「そろそろ現場でスキルを試してみたい」と感じている方には、以下の転職サイトもおすすめです。
コメント