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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

2回答

1218閲覧

Apacheでオリジナルのエラーページを1つにまとめたい。

karenDevice

総合スコア28

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

0クリップ

投稿2021/08/26 06:47

前提・実現したいこと

Apacheでステータスコードごとにエラーページを作成するのがめんどくさくなりました。まとめて作成する手段はありますか?

試したこと

オリジナルのエラーページの設定を次のようにしてハッシュを渡し、HTML内のJavaScriptを使ってこれを取得しようと試みましたが失敗しました。errorPage.htmlにステータスコードの情報を渡す術はありますでしょうか?

Apache

1ErrorDocument 404 /errorPage.html#404 2ErrorDocument 500 /errorPage.html#500

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8"/> 5 </head> 6 <body> 7 <div id="message"></div> 8 </body> 9 <script> 10 var element = document.getElementById("message"); 11 if (location.hash == "#404") 12 { 13 element.innerText = "ページがなかったよ。"; 14 } 15 else if (location.hash == "#500") 16 { 17 element.innerText = "サーバーでエラーが発生したよ。"; 18 } 19 else 20 { 21 element.innerText = "イミフなエラーだよ。"; 22 } 23 </script> 24</html>

補足情報(FW/ツールのバージョンなど)

Apacheのバージョンは2.4.38を使用しています。

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

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

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

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

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

guest

回答2

0

自己解決

カスタムエラーレスポンス - Apache HTTP サーバ バージョン 2.4を基にPythonで書き直しました。

そこにあるサンプルはPerlでしたが、Pythonでも同じようにos.environでREDIRECT_STATUSを取得できました。

ありがとうございました。

投稿2021/08/26 08:29

karenDevice

総合スコア28

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

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

0

エラーページでjsを動作させるのは違和感があります
べつにすべてオリジナルで用意しないといけないわけではないので
作りたいものだけつくって面倒ならあとは放置でよいでしょう

投稿2021/08/26 06:50

yambejp

総合スコア116441

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

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

karenDevice

2021/08/26 06:57

おっしゃりたいことはわかります。 LANでの運用でPC以外ではアクセスすることがありませんのでこの方法をとった訳ですが、もし他の方法があるなら知りたいです。 よろしくお願いします。
yambejp

2021/08/26 07:09

たとえばサーバーサイドプログラムで切り分ける方法もあるでしょう しかしそもそもが「エラー」が発生している前提なのですから エラーで飛んだ先のサーバーサイドプログラムが動いている保証もありません。 クライアント環境に問題がある可能性もありjsの動作も保証されないのに jsでエラーを表示するということはクライアントにエラーが表示されない 可能性もあり、本質的にはNGです エラーページはスタティックなデータで用意し、 1エラー1ページとするのが原則です その上で、エラー原因がクライアントにつたわらなくても かまわないというのであればご提示のような方法かもしくは getパラメータで渡してlocation.searchで判断してください
karenDevice

2021/08/26 07:42

全てそれで構いません。 location.hashもlocation.searchも(こちらは今試しました。)試してみましたが設定にある#や?以降の文字列では受け渡せないようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問