サイトアイコン IT NEWS

ApacheのAliasと.htaccessでLaravelをサブディレクトリで動かす

laravel-subdirectry

1つのドメインで複数サイトを運用したい場合の1つの方法として、サブディレクトリドキュメントルートとして動作させる方法があります。
以前学習したApacheAriasを利用して、Laravelサブディレクトリで動作させる方法をご紹介します。

サブドメインじゃダメなの?と思った方へ。
まず、この記事に至った経緯ですが、自宅サーバーでフリードメインのサブドメインを自分で設定しようとすると何かと面倒なのでした。
しかし、この方法だと比較的簡単に設定することができます。
それでは参ります!

Laravelをサブディレクトリで動かす

作成または変更する設定ファイルは、サーバー側でAriasを設定する〜.confと、Laravelpublicディレクトリ直下にある.htaccessのみです。

ApacheのAliasを設定する

ここでは、LinuxCentOS 7)の設定です。
httpd.confconf.dを読み込んでいることを前提とします。
まずは、Alias設定用のファイルを作成します。

vim /etc/httpd/conf.d/alias.conf

※別ファイルに設定する必要はないですが、わかりやすくするために分けて書きますそして、ファイル内に以下のように記述します。

Alias /sample /var/www/html/laravel/public
<Directory "/var/www/html/laravel/public">
  Options Includes ExecCGI FollowSymLinks
  AllowOverride All
  Require all granted
  Order allow,deny
  Allow from all
</Directory>

ここで既にLaravelpublicフォルダを参照するようにします。
完了したら保存してApacheを再起動しましょう。

systemctl restart httpd

ApacheAlias設定は以上です。

.htaccessを変更する

次に、Laravelのプロジェクトフォルダ直下のpublicフォルダ内にある.htaccessファイルを編集します。
注目すべきは最後の2行です。

・・・
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
#RewriteRule ^ %1 [L,R=301]
RewriteRule ^(.*)/$ /laravel/\ [L,R=301]
RewriteBase /laravel/
・・・

デフォルトで書かれているRewriteRuleをコメントアウトし、Aliasで設定したサブディレクトリを指定します。
次に、サブディレクトリを指定したRewriteBaseを追記して完了です。

注意点・参考サイト

著者が参考にしたサイトでは、RewriteBaseのサブディレクトリ名の後ろにスラッシュ/)を書いてなかったのですが、これがないとURLの後ろにスラッシュを付けるとページが表示されませんでした。
上記の書き方ならスラッシュがあってもなくても表示することができました。

以上!ありがとうございました!

モバイルバージョンを終了