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

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

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

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

.htaccess

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

Laravel 5

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

Q&A

解決済

4回答

9147閲覧

htaccessでメンテナンス画面を表示しようとしていますが表示できません。

red13

総合スコア79

PHP

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

.htaccess

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

Laravel 5

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

0グッド

0クリップ

投稿2016/03/22 08:01

laravelを使用して画面を作成しています。
http://localhost/proj/public/~等で作成しています。

メンテナンス時、http://localhost/proj/public/~にアクセスした場合に
メンテナンス画面を表示するようにhtaccessを設定していますが画面が表示されません。
chromeで見てみましたが
「localhost ページは機能していません
localhost でリダイレクトが繰り返し行われました。」
と表示されます。
以下のように設定していますが、どこが違っているのでしょうか。

RewriteCond %{REQUEST_URI} !^/A0008$
RewriteRule ^.*$ /proj/public/A0008 [R=301,L]
※A0008はメンテナンス画面です。

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

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

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

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

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

guest

回答4

0

自己解決

結果を書くと
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^(.)A0008(.)
RewriteRule ^.*$ /proj/public/A0008 [R=301,L]
でループしなくなりました。

ログでは
~[perdir C:/xampp/~/public/]~のログが出続けていました。
おそらくpublicフォルダに対してリダイレクトを実行しているため無限ループしたのではないかと思います。
なので実在するファイルとフォルダを対象外にしてpublic/A0008に進むようにしました。

投稿2016/03/24 00:30

red13

総合スコア79

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

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

red13

2016/03/24 00:32

自己解決したためベストアンサーは自身にさせていただきます。
guest

0

既に試された、以下のどちらかでできると思うのですが、.htaccess ファイルは proj/public/.htaccess に配置していますよね?

RewriteEngine On RewriteRule ^A0008$ - [L] RewriteRule ^.*$ /proj/public/A0008 [R=301,L] または RewriteEngine On RewriteCond %{REQUEST_URI} !^/proj/public/A0008$ RewriteRule ^.*$ /proj/public/A0008 [R=301,L]

httpd.conf の編集権限があるのでしたら、ログレベルを上げると何かわかるかもしれません。

(httpd-2.2) RewriteLog /var/log/httpd/rewrite.log RewriteLogLevel 4 (httpd-2.4) LogLevel warn rewrite:trace4 # error_log に出力

投稿2016/03/23 10:05

TaichiYanagiya

総合スコア12146

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

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

red13

2016/03/24 00:22

自己解決いたしましたが、結果を記載します。 proj/public/.htaccessに配置しています。 RewriteRule ^A0008$ - [L] はobject not foundが表示されます。 RewriteCond %{REQUEST_URI} !^/proj/public/A0008$ は質問内容と同じ事象が発生します。
guest

0

^/A0008$ じゃ無い物全てが /proj/public/A0008 に変更されているので
変更した後の /proj/public/A0008 も ^/A0008$ ではないために無限ループ
しているという状況では無いでしょうか

投稿2016/03/22 10:27

HiroshiWatanabe

総合スコア2160

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

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

red13

2016/03/23 00:17

「一部のURL除外」等で検索してみましたが駄目でした。 RewriteCond %{REQUEST_URI} !(^A0008$) も RewriteCond %{REQUEST_URI} !^/proj/public/A0008$ も駄目でした。
guest

0

laravelメンテナンスモードを参照してメンテナンス画面を表示したほうが良いかと思います。

maintenance-mode

投稿2016/03/22 08:13

編集2016/03/22 08:17
JinwonKim

総合スコア312

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

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

red13

2016/03/22 09:00

メンテナンスモードでは駄目でした。 App/Exceptions/Handler.php内で if ($e instanceof Exception) { // リダイレクト } と例外発生時にリダイレクト処理を実装しているため メンテナンスでHttpException発生→Handlerでキャッチ→リダイレクトでメンテナンスへ→元に戻る と無限ループになってしまいます。
JinwonKim

2016/03/23 13:28

なにもせず、メンテンスモード起動すればみれるはずですが。 $php artisan down
JinwonKim

2016/03/23 13:49

ExceptionってチェックしちゃうとすべてそのIFに流れると思いますが、
red13

2016/03/24 00:24

ドキュメントを見ると、メンテナンスモードにするとHttpExceptionが発生します。 HttpExceptionが発生するため、Handler.phpのifに全て入ってしまいます。 なのでキャッチ→画面表示→キャッチの無限ループが発生します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問