【Laravel5.4】ルーティング設定が効かないときに確認することまとめ

Laravel5.4ではroutes/web.phpでルーティング設定を行う

しかしそこで設定したパスでアクセスしてみても404 not foundが返ってきた・・・

よくわからないのでこちらの記事を参考に確認してみる

ルートが存在するのか確認

root@fd170edee83b:/var/www/html/LaravelProject# php artisan route:list
+——–+———-+———-+——+———+————–+
| Domain | Method | URI | Name | Action | Middleware |
+——–+———-+———-+——+———+————–+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | hello | | Closure | web |
+——–+———-+———-+——+———+————–+

helloというルートは存在している

その他確認してみる

その他httpd.confやlaravel/public配下の.htaccessの内容、app/storageパーミッションも確認してみたが特に問題はなさそう

なぜだろうと思っていたらこちらの記事が役立ちました

犯人はapache2のmod_rewriteでした

apache2のmod_rewriteですが

dockerで取得したapache2なのでこちらのubuntu版apache2仕様だったのではないかと思います

1.rewrite.loadがあるか確認してみる

root@fd170edee83b:/var/www/html/LaravelProject# ls /etc/apache2/mods-enabled/
access_compat.load authz_host.load dir.load negotiation.conf
alias.conf authz_user.load env.load negotiation.load
alias.load autoindex.conf filter.load php7.load
auth_basic.load autoindex.load mime.conf setenvif.conf
authn_core.load deflate.conf mime.load setenvif.load
authn_file.load deflate.load mpm_prefork.conf status.conf
authz_core.load dir.conf mpm_prefork.load status.load

rewrite.loadがありませんね

なのでrewrite.loadを作って有効にします

こちらを参考にLaravel artisanコマンドを使います

root@fd170edee83b:/var/www/html/LaravelProject# a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
service apache2 restart

2.apacheを再起動

root@fd170edee83b:/var/www/html/LaravelProject# apachectl restart
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 172.17.0.3. Set the ‘ServerName’ directive globally to suppress this message

3.rewrite.loadファイルが作成されていることを確認

root@fd170edee83b:/var/www/html# ls /etc/apache2/mods-enabled/
access_compat.load authz_user.load filter.load rewrite.load
alias.conf autoindex.conf mime.conf setenvif.conf
alias.load autoindex.load mime.load setenvif.load
auth_basic.load deflate.conf mpm_prefork.conf status.conf
authn_core.load deflate.load mpm_prefork.load status.load
authn_file.load dir.conf negotiation.conf
authz_core.load dir.load negotiation.load
authz_host.load env.load php7.load

設定したルーティングでアクセスしてみるとできたので解決

ちなみにubuntuでなくcentosの場合だとこちらを参考に

というか参考ページにもあるように

新しいサーバに mod_rewrite を使ったシステムをそのままコピーしても使えない。
これは当たり前。
「.htaccess」をコピーしても使えない。
なんで?

httpd.conf も修正する必要があるから。

ということらしい

シェアする

  • このエントリーをはてなブックマークに追加

フォローする