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


laravel-subdirectry

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

LinuxでApacheをインストールすると、デフォルトのDocumentRootは以下の場所になります。/var/www/htmlただし、これだと1つのWEBサーバーに対して1つのサイトしか公開できません。複数のサイトを公開する場合、サブディレクトリとサブドメインの2種類の方法がありま...
LinuxでApacheのAliasを設定して複数のサイトを公開する - Minory
サブドメインじゃダメなの?と思った方へ。
まず、この記事に至った経緯ですが、自宅サーバーでフリードメインのサブドメインを自分で設定しようとすると何かと面倒なのでした。
しかし、この方法だと比較的簡単に設定することができます。
それでは参ります!

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/$1 [L,R=301]
RewriteBase /laravel/
・・・

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

注意点・参考サイト

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

# 概要- Laravel5.xを で動作させたい。- 設定ファイルの位置は CentOS6 ベースです。# Apache``` diff:/etc/httpd/c...
Laravel5.xをサブディレクトリで動かす - Qiita - Qiita
以上!ありがとうございました!


コメント

このブログの人気の投稿

Linuxでファイルの改行コードLF⇔CRLFを変換する方法

RHEL 7でスタティック(静的)ルートを追加する4つの方法

UTF-8のBOM付きとBOMなしを変換する方法(Linux)