質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

1回答

3219閲覧

laradock(nginx+php-fpm)を使って404not foundページを表示させたい

uzihamada

総合スコア40

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/12/24 06:11

laradockを使ってPHPアプリケーションを作成しています。laravelは5.5です。
ありえないURLにアクセスされた時は404ページを表示させたいのですが上手く行きません。
lardock/nginx/sites/default.conf では

server

1 2 listen 80 default_server; 3 listen [::]:80 default_server ipv6only=on; 4 5 server_name localhost; 6 root /var/www/yyux/laradock/uiux/public; 7 index index.php index.html index.htm; 8 9 auth_basic "basic auth"; 10 auth_basic_user_file /etc/nginx/sites-available/.htpasswd; 11 12 location / { 13 try_files $uri $uri/ /index.php$is_args$args; 14 } 15 16 location ~ .php$ { 17 try_files $uri /index.php =404; 18 fastcgi_pass php-upstream; 19 fastcgi_index index.php; 20 fastcgi_buffers 16 16k; 21 fastcgi_buffer_size 32k; 22 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 23 include fastcgi_params; 24 } 25 26 location ~ /.ht { 27 deny all; 28 } 29 30 location /.well-known/acme-challenge/ { 31 root /var/www/letsencrypt/; 32 log_not_found off; 33 } 34}

となっていてありえないURLにアクセスするとルートディレクトリが表示されます。

# try_files $uri $uri/ /index.php$is_args$args;

という風にこの部分をコメントアウトすると404 not foundになるのですがnginx自体のエラーページが表示されてしまいます。
ここでルートディレクトリではなくエラーページにリダイレクトするようにすれば一応は解決するのですが、それだとURLが変わってしまうためできれば避けたいです。
larvelの公式ドキュメントには404.blade.phpを用意すれば済むという話だったのですが、おそらくnginxの設定の影響でこうなっている?と思っているのですが、こちらどうすればよいのでしょうか…

情報として足りない部分ありましたら教えてください。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

リクエストを全部index.phpで受けてるならnginxは関係なく404を表示するのはLaravel側の仕事です。
最近はデフォルトでは用意されてませんがerrorsを作ってその中に404.blade.php置いてますか?
resources/views/errors/404.blade.php

投稿2017/12/24 08:06

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uzihamada

2017/12/25 00:28

resources/views/errors/404.blade.php は用意しております。 laravelのプログラム中でabort(404)とすると404.blade.phpは呼び出されるのですが、単純に存在しないURLだと呼び出されません。質問にも記載しましたが、現在の設定だとルートディレクトリ(example.com)にリダイレクトする。 下記nginxの設定を変更 # try_files $uri $uri/ /index.php$is_args$args; とコメントアウトするとnginxの404ページが表示されてしまいます。 となり、laravelでの操作というよりnginxの設定かと思っているのですがいかがでしょうか…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問