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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

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

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

1479閲覧

kusanagi, lamp, cakephpで特定のハッシュURLが404になる

tora2245

総合スコア9

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

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

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2018/08/11 08:56

編集2018/08/11 09:01

kusanagi, lamp, cakephpで特定のハッシュURLが404になる

ハッシュをGETパラメーターで受け取って、特定ページを表示させる処理を書いています。
大体問題なく動くのですが、5回に1回くらいの割合で、404で動かないハッシュが生成されます。

リクエストがPHPまで届いていないようで、以下のような画面が返されます。

html

1<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 2<html><head> 3<title>404 Not Found</title> 4</head><body> 5<h1>Not Found</h1> 6<p>The requested URL /foo/bar/28/9MhGd0/KP6GqnNA/PBZtKA== was not found on this server.</p> 7</body></html>

cakephpのエラーログにはなにも記録されません。
access.logには以下のログを見つけました。404と表示され時間も大体合ってるのでこれかと。
しかし解決に役立ちそうな記述は見つからず。
これ以外にはめぼしい記述はなく、その他は200ばかりだったので割愛します。
/var/log/httpd/access.log

log

1[11/Aug/2018:13:53:04 +0900] "GET /manager/html HTTP/1.1" 404 210 "-" "Mozilla/3.0 (compatible; Indy Library)"

error.logには該当時間帯のログはなかったので同じく割愛。

問題なく動くハッシュと、動かないハッシュを見比べてみても違いがよく分からず。
404の画面にある通りスラッシュが混じっているので、そのスラッシュも取得できるように書いてみたりしたんですが、そもそもPHPまで届いていないようで効果なく。

期待通り。問題なくページが表示される。

url

1https://hoge.com/foo/bar/29/jZqC5En0YhDoSx6SpZsKJQ%3D%3D

404 Not Fond

url

1https://hoge.com/foo/bar/28/9MhGd0%2FKP6GqnNA%2FPBZtKA%3D%3D

長いのかな?と思って少しずつ削ってみた結果は以下の通り。

404 Not Fond

url

1https://hoge.com/foo/bar/28/9MhGd0%2FKP6GqnNA%2FPBZtK

400 Bad Request

url

1https://hoge.com/foo/bar/28/9MhGd0% 2

期待通り(cakephpで用意したエラーページ表示)

url

1https://hoge.com/foo/bar/28/9MhGd0

だいぶ削ってPHPまで届いたようなんですが、そもそも問題なく表示されるハッシュはだいぶ長くても大丈夫なので、長さの問題ではないかと。

追記:ハッシュは rawurlencode() でエンコードしています。

知識が乏しく、どこから調べていけば良いのかも検討がつきません。
なにかヒントなどありましたら、よろしくお願い致します。

kusanagi status は以下の通りです。

kusanagi

1Type: lamp 2KUSANAGI Version 8.2.1-2 3sakura 4 5*** (not active) nginx *** 6● nginx.service - The NGINX HTTP and reverse proxy server 7 Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) 8 Active: inactive (dead) 9 10*** (active) Apache2 *** 11● httpd.service - The Apache HTTP Server 12 Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) 13 Active: active (running) since 日 2018-07-15 15:44:06 JST; 3 weeks 6 days ago 14 15*** (not active) PostgreSQL *** 16 17 18*** (active) php-fpm *** 19● php-fpm.service - The PHP FastCGI Process Manager 20 Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) 21 Active: active (running) since 日 2018-07-15 15:44:06 JST; 3 weeks 6 days ago 22 23*** (not active) HHVM *** 24● hhvm.service - HHVM virtual machine, runtime, and JIT for the PHP language 25 Loaded: loaded (/etc/systemd/system/hhvm.service; disabled; vendor preset: disabled) 26 Active: inactive (dead) 27 28*** (not active) Pgpool-II *** 29 30 31*** (not active) php7-fpm *** 32● php7-fpm.service - The PHP FastCGI Process Manager 33 Loaded: loaded (/usr/lib/systemd/system/php7-fpm.service; disabled; vendor preset: disabled) 34 Active: inactive (dead) 35 36*** (active) MariaDB *** 37● mariadb.service - MariaDB 10.1.33 database server 38 Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) 39 Active: active (running) since 水 2018-05-16 13:51:53 JST; 2 months 26 days ago 40 41*** ruby *** 42ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux] 43 44*** add-on *** 45 46*** Cache Status *** 47fcache off

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/08/11 16:27

適当な回答だから解答欄には書かないけど URLエンコーディングされたまま比較してるか誤ってされてるかのどっちかじゃね
guest

回答1

0

自己解決

AllowEncodedSlashes on
追記で解決しました。お騒がせしました。

投稿2018/08/14 02:20

tora2245

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問