1つのドメインで複数サイトを運用したい場合の1つの方法として、サブディレクトリをドキュメントルートとして動作させる方法があります。
以前学習したApacheのAriasを利用して、Laravelをサブディレクトリで動作させる方法をご紹介します。
サブドメインじゃダメなの?と思った方へ。
まず、この記事に至った経緯ですが、自宅サーバーでフリードメインのサブドメインを自分で設定しようとすると何かと面倒なのでした。
しかし、この方法だと比較的簡単に設定することができます。
それでは参ります!
Laravelをサブディレクトリで動かす
作成または変更する設定ファイルは、サーバー側でAriasを設定する〜.conf
と、Laravelのpublicディレクトリ直下にある.htaccess
のみです。
ApacheのAliasを設定する
ここでは、Linux(CentOS 7)の設定です。httpd.conf
でconf.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>
ここで既にLaravelのpublicフォルダを参照するようにします。
完了したら保存してApacheを再起動しましょう。
systemctl restart httpd
ApacheのAlias設定は以上です。
.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の後ろにスラッシュを付けるとページが表示されませんでした。
上記の書き方ならスラッシュがあってもなくても表示することができました。
以上!ありがとうございました!
- Original:https://minory.org/laravel-subdirectry.html
- Source:Minory
- Author:管理者