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

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

新規登録して質問してみよう
ただいま回答率
85.48%
さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

PHP

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

1回答

2256閲覧

さくらのレンタルサーバで、html内php表示とメンテ画面の共存

suzienuzie

総合スコア2

さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

PHP

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2021/03/12 04:47

編集2021/03/12 05:52

前提・実現したいこと

さくらのレンタルサーバ スタンダードにて、.htaccessを使って
・html内でphpを表示させる
・自作のメンテナンス画面を表示させる

発生している問題・エラーメッセージ

両方同時に機能させることがうまくいきません。

さくらのレンタルサーバは特殊なようで、html内でphpを動かすためにphp.cgiを設置後、.htaccessに

Action myphp-script /php.cgi

の記述を追加しています。

この度メンテナンス画面が必要になり、同.htaccess内に
ErrorDocument 503〜から始まる記述を追加したのですが、なぜか自作のページが表示されず、いろいろ試していると、Action myphp-script /php.cgiを消すと表示されることがわかりました。
ですが裏で作業するためにはこの記述はマストなので消すことができず、困っています。
php.cgiを除外すればよいと見たのですが、特に変わりなしでした。
他の書き方で上記の希望を実現する方法はないでしょうか?
.htaccessはあまり詳しくなく、見よう見まねなのですが、詳しい方おられましたらよろしくお願いします。

該当のソースコード

Action myphp-script /php.cgi AddHandler myphp-script .php .html ErrorDocument 503 /maintenance.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REQUEST_URI} !=/php.cgi ←意味なし? RewriteCond %{REMOTE_ADDR} !=101.00.00.00 RewriteRule ^.*$ - [R=503,L] </IfModule>

html

1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 7 <meta name="viewport" content="width=device-width, initial-scale=1"> 8 <title>メンテナンス中です</title> 9 10 <style> 11 body, 12 svg, 13 div, 14 h1, 15 h2, 16 p { 17 margin: 0; 18 padding: 0; 19 } 20 21 body { 22 background-color: #fff; 23 font-family: Meiryo, sans-serif; 24 display: flex; 25 justify-content: center; 26 align-items: center; 27 } 28 </style> 29</head> 30 31<body> 32 <div class="container"> 33 <svg id="基本データ" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" 34 height="90.471" viewBox="0 0 200 90.471"> 35 <defs> 36 <style></style> 37 <linearGradient ・・・ 38 </svg> 39 <h1>ただいまメンテナンス中です</h1> 40 <p>Webサイトリニューアル作業のため、サービスを停止しています。<br> 41 ご利用の皆様にはご迷惑をおかけしますが、メンテナンス終了まで今しばらくお待ちください。</p> 42 <h2>メンテナンス期間</h2> 43 <p>2021年3月1日(月) 9:00〜12:00(予定)</p> 44 </div> 45</body> 46</html>

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

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

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

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

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

m.ts10806

2021/03/12 05:03

そのメンテナンス画面とはどのように作られているのでしょうか。単なるhtmlですか? コードも提示されたほうが良いかもしれません
suzienuzie

2021/03/12 05:53

単なるhtmlです。ソース追加しました。 svgがありますが関係ありますでしょうか?
m.ts10806

2021/03/12 06:03

おそらく関係ないです。 ちなみに、そのメンテナンス画面をブラウザで実行すると何が出ますか? 個人的には下記一行の必要性がいまいちわかりません。 RewriteCond %{REQUEST_URI} !=/maintenance.html どんなアクセスもこのhtmlにリライトさせる?
guest

回答1

0

ベストアンサー

Apache

1Action myphp-script /php.cgi 2<FilesMatch "^(?!/maintenance.html)"> 3 AddHandler myphp-script .php .html 4</FilesMatch> 5 6ErrorDocument 503 /maintenance.html 7RewriteEngine On 8RewriteCond %{REQUEST_URI} !=/maintenance.html 9RewriteCond %{REQUEST_URI} !=/php.cgi ←意味なし? 10RewriteCond %{REMOTE_ADDR} !=101.00.00.00 11RewriteRule ^.*$ - [R=503,L]

でどうでしょうか?

投稿2021/03/12 14:11

otn

総合スコア84505

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

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

suzienuzie

2021/03/15 06:25

ご回答ありがとうございます。 やってみましたが、おなじみ愛想のない503画面になりました・・・↓↓↓ Service Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. Additionally, a 503 Service Unavailable error was encountered while trying to use an ErrorDocument to handle the request.
otn

2021/03/15 12:57

AddHandler myphp-script .php .html にマッチしなければ良いという予想のもと、 maintenance.html を maintenance.htm に拡張子を変えて、設定記述も全部 maintenance.htm に変えるのはどうでしょう?
suzienuzie

2021/04/02 05:57

大変お返事遅くなり申し訳ありません。 試してみたところ、オリジナル503画面を表示させることができました!! この拡張子の記述部分って、本当に書いてあるとおりの意味なのですね・・・そんな簡単なことで良かったとは、目から鱗でした。 古の.htm表記がこんなところで役に立ったことにもびっくりです。 勉強になりました。本当にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問