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

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

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

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

Q&A

3回答

2380閲覧

.htaccess500エラーページ指定方法

Roo

総合スコア55

PHP

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

0グッド

1クリップ

投稿2019/03/13 05:49

編集2019/03/13 08:43

前提・実現したいこと

●Httpステータス500エラー発生の時、指定した画面に遷移させたい。
.htaccessにて、ErroeDocumentを指定しています。

実施環境:さくらのvps

htaccess

1//ベーシック認証↓ 2AuthUserFile /var/www/html/.htpasswd 3AuthName "Please enter your ID and password" 4AuthType Basic 5require valid-user 6 7//ここでページ指定↓ 8ErrorDocument /403.php 9ErrorDocument /500.php 10 11

###テスト実施方法
●500エラーページ確認方法
php ファイルにて

// 現在のレスポンスコードを取得して、新しいコードを設定します
var_dump(http_response_code(404));

// 新しいレスポンスコードを取得します
var_dump(http_response_code(500));

発生している問題

ステータスコードは500で返ってきていますが、
500の画面に遷移しません
上記時実施。

質問点

.htaccessの記述が悪いのでしょうか?
.テスト方法が間違っているのでしょうか?

上記二点の解答と修正方法をお教えくださいませ。

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

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

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

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

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

guest

回答3

0

ErrorDocumentでは絶対URLで書いてはいけません。

ErrorDocument 403 /403.php
ErrorDocument 500 /500.php

【htaccess】403・404・500エラーのときに任意で作成したページを表示する - Qiita

ちなみに、Allow from 500なんて書き方は通りません。
.htaccess(Apache) の Order Allow,Deny(またはDeny,Allow)について - Qiita
IPアドレスやホスト名とみなせるものしか通らないため、
テストになっていないと思われます。

投稿2019/03/13 05:52

編集2019/03/13 06:18
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Roo

2019/03/13 06:01

ご回答ありがとうございます。 そちら試したのですが、うまくいかずで絶対で記載いたしました。
退会済みユーザー

退会済みユーザー

2019/03/13 06:01

うまくいかず、とは。
退会済みユーザー

退会済みユーザー

2019/03/13 06:03

500エラーなんて、phpでもなんでも文法エラーくらいで発生するから、そういうサンプルコードをかけば良いと思います。
Roo

2019/03/13 06:06

上手くいかず=発生している問題のページに遷移してし舞います 構文エラーで試してみます。
Roo

2019/03/13 06:40

500エラーの画面を標示したい場合=内部サーバーエラー 通らないということは、 内部サーバーエラーが発生するという認識でした。 構文でエラーを出す場合どのあたりを壊せば宜しいでしょうか? DB接続まわりは構文エラーとして扱われてしまいます。 displayerror系現在確認中です
guest

0

.htaccessの構文チェックサイトがあるのでご活用ください。

もし提示の通りならコメントのしかた間違ってますし、
それを除いたとしてもまだ構文のミスっぽいのがありますね。

投稿2019/03/13 07:00

m.ts10806

総合スコア80850

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

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

Roo

2019/03/13 08:02

ですね、、下記の方の意見も参考にすると 間違っているため.htaccessが効かないということになります。 しかし構文でのエラーの出し方がわからずです。 よければご教授いただけませんか?
m.ts10806

2019/03/13 08:06

既に回答やコメントで出てますが.htaccessを間違えないようにした状態で、プログラムで出すこと。 phpならheader()にてエラーとしたいhttpレスポンスコードを指定、送信すれば良いのではないでしょうか
Roo

2019/03/13 08:26

haeder(500)←であっていますか? こちらの場合でもステータス200で返ってきます。
m.ts10806

2019/03/13 08:33

phpマニュアルちゃんと読んで正しく組んでください。
Roo

2019/03/13 08:37

<?php var_dump(http_response_code(404)); var_dump(http_response_code(500)); ?> 失礼いたしました。 ステータス500で返ってくることを確認できました。が、 .htaccessで指定したファイルには飛場ない現状です
guest

0

当たり前だと思いますが、.htaccessファイルにエラーがあれば、.htaccessファイルの内容は無視されます。

.htaccessの内容は正しくして、表示するファイル(プログラム)のほうでエラーにしてください。

投稿2019/03/13 06:48

otn

総合スコア84499

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

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

Roo

2019/03/13 08:00

プログラムの方でエラーを出す方法はありますでしょうか? こちら、DB接続部分等 削除したりしてみたのですが、200が返ってきています。
otn

2019/03/13 08:11

中身が空の foo.cgi を作って、http://~~/foo.cgi を呼び出してください。cgi拡張子が有効になっている前提。
Roo

2019/03/13 08:17

200で返ってきました。 有効になってないということでしょうか?
otn

2019/03/13 08:19

そうですね。 では、foo.php で、下記の内容にしてください。 <?php xxxxxxxx;
Roo

2019/03/13 08:24

変わらず200で返ってきています。
otn

2019/03/13 12:15

200で返ってきたときに、得られたデータの内容を書いてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問