2022年3月5日土曜日

LaravelをApache2でルーティングさせる

Laravelは専用サーバでもApacheでも表示させることはできるが、Apacheでルーティングさせるにはrewrite機能が必要

そのためそのままでルーティングさせたページを表示してもNot Foundになる


$ apache2 -v
Server version: Apache/2.4.38 (Debian)


Debian系の場合Apache2の設定ファイルは /etc/apache2 にある apache2.conf
になる。(昔はhttpd.conf)

一枚に書かれていたhttpd.confと違いモジュール等がツリー形式にリンクされている。

/etc/apache2/
# |-- apache2.conf
# | `--  ports.conf
# |-- mods-enabled
# | |-- *.load
# | `-- *.conf
# |-- conf-enabled
# | `-- *.conf
# `-- sites-enabled
# `-- *.conf

モジュール有効化も直接書き換える形から a2enmod コマンドで有効化する形になっているので mods-available ディレクトリに rewrite.load があるか確認


$ ls mods-available/
..... request.load allowmethods.load     dav_lock.load
mime_magic.conf      rewrite.load

確認できたらモジュール有効化

$ sudo a2enmod rewrite

そして apache2.conf にある AllowOverride を All に書き換える

$ sudo vi /etc/apache2/apache2.conf

<Directory /var/www/>
        Options Indexes FollowSymLinks
        # AllowOverride None 
        AllowOverride All  # NoneからAllへと変更
        Require all granted
</Directory>


Apache2を再起動

$ sudo service apache2 restart

これでルーティングされたページを開いてもちゃんと表示される。