1 名前:nobodyさん mailto:sage [2013/11/10(日) 15:46:09.34 ID:???] 質問者はまず>>1 を良く読むこと(必須!) 過去スレ、関連スレ、FAQなどは>>2-10 辺り 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 130 kohada.2ch.net/test/read.cgi/php/1379566039/ ◆質問用テンプレ 【OS名】CentOS 【PHPのバージョン】5.3 【連携ソフトウェア】MySQL ImageMagick 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
282 名前:nobodyさん mailto:sage [2013/11/19(火) 12:39:02.32 ID:???] fuelは出た手の頃、ormがPrepare使ってなくて使うのやめたんだが 今も治ってないの?
283 名前:nobodyさん [2013/11/19(火) 12:53:02.64 ID:hKBGRur1] >>282 fuelphp.jp/docs/1.6/general/security.html#sql
284 名前:nobodyさん mailto:sage [2013/11/19(火) 13:15:30.92 ID:???] >>283 ダメではないか
285 名前:nobodyさん mailto:sage [2013/11/19(火) 13:17:38.96 ID:???] 私JKで試したわけぢゃないけどーprepare+bindXxxって query+quoteに比べて処理工数が多いだけに遅そうだしー ただでさえ遅いFWの速度をあげるには仕方ないのでゎ
286 名前:nobodyさん mailto:sage [2013/11/19(火) 13:21:29.56 ID:???] >>285 そんなんボトルネックにならん
287 名前:nobodyさん mailto:sage [2013/11/19(火) 13:23:36.67 ID:???] ちっちゃいのが積み重なると大きくなるけどね
288 名前:nobodyさん mailto:sage [2013/11/19(火) 13:24:21.74 ID:???] >>284 一昔前の文字コードやエスケープ処理での脆弱性を知らないんだろうし シングルバイト系の人は知らない人多いし
289 名前:nobodyさん [2013/11/19(火) 13:37:06.01 ID:hKBGRur1] >>284 >> 288 だめなの? fuelphpてSQLインジェクション防げないんだ… これはオワコンだわ
290 名前:nobodyさん mailto:sage [2013/11/19(火) 13:49:33.19 ID:???] >>289 基本的には防げてるし、新たに発見された脆弱性も継続して修正されてる。 fuelphp.com/security-advisories 「プリペアードステートメントを使ってないからSQLインジェクションの脆弱性がある」というのはFUD。 とはいえ、プリペアードステートメント使えやとは思うけどね。
291 名前:nobodyさん mailto:sage [2013/11/19(火) 13:57:50.15 ID:???] SQLインジェクションは、Prepare使わないと防げないわけではない。 そもそもでいえば、インジェクション防止の機構じゃねーし。 SQLの機構じゃなくて、ライブラリのラッパなので、仕様によっては 使っていても問題ないというわけではない。
292 名前:nobodyさん mailto:sage [2013/11/19(火) 13:58:01.02 ID:???] >>285 クエリを実行するとき、データベースサーバでは、 1. 構文解析 2. 実行計画立案 3. クエリ実行 の処理が必要で、prepareでは1または1&2が行われる。(構文のみで実行計画を立てて固定する場合と、3で渡された パラメータをもとに実行計画を立てる場合がある) 一方、exec queryでは毎回1〜3が行われる。 なので、同じ処理をパラメータを変えながら複数回実行する場合、プリペアードステートメントを使った方が速い場合がある。
293 名前:nobodyさん mailto:sage [2013/11/19(火) 14:08:35.69 ID:???] レスありがとうございます >>268 PHPが何なのか解らず、単にネットプログラムの質問スレで質問させて頂きました >>269 大手企業サイトなので厳しいですね ど素人ながら、ログインボタンのURLとかPCでログイン後のURLとか試したんですが、無理でした
294 名前:nobodyさん mailto:sage [2013/11/19(火) 14:12:15.36 ID:???] >>293 > 大手企業サイトなので厳しいですね 大手こそ対応してくれそうなもんだが。 「○○のサイトって、ガラケーのフルブラウザだとログインもできない糞サイトだわ」 とかネットで言われると困るだろうし。
295 名前:nobodyさん mailto:sage [2013/11/19(火) 14:15:18.76 ID:???] >>289 そこそこ有名なPHPのフレームワークにそんな基本的な脆弱性があるなら、大垣氏あたりが騒いでるよ。
296 名前:nobodyさん mailto:sage [2013/11/19(火) 14:48:00.13 ID:???] >>295 もちろん知ってる。>>284 と>>288 を皮肉ったんだよ、
297 名前:nobodyさん mailto:sage [2013/11/19(火) 15:30:48.92 ID:???] >>288 の話ってPHPの脆弱性の話じゃないだろ、常識だろ?
298 名前:nobodyさん mailto:sage [2013/11/19(火) 15:39:16.53 ID:???] gihyo.jp/dev/serial/01/php-security/0042
299 名前:nobodyさん mailto:sage [2013/11/19(火) 15:49:48.19 ID:???] >>295 quoteだけでは防げない問題を見つけてつぶしていってくれてるんだよ。
300 名前:nobodyさん mailto:sage [2013/11/19(火) 15:55:45.62 ID:???] www.tokumaru.org/d/20100701.html 昔のMySQLみたいなprepareがクライアントサイドで処理とかゴミな実装されてると prepareのほうが脆弱性の巣窟になりかねない。 この場合、徳丸氏や大垣氏が騒ぐから問題はいつか解決される
301 名前:nobodyさん mailto:sage [2013/11/19(火) 16:05:50.48 ID:???] 今htmlフォームのradio,cheakbox,selectを使ってphpにポストしています ポストしたデータ類はdbやcsvに書き込んだり保存したりするわけでもなく switch($_POST["color"]) { case "red":return imageColorAllocateAlpha($i,200,200,200,$alpha);break; ~~~~~~ default:return imagecolorallocate($i,255,255,255,$alpha);break; } で最終的に変な物が飛んできてもdefaultで処理されると思うんですがセキュリティ的にこれ$_POSTを正規表現やstrlenで弾くべきですか?
302 名前:nobodyさん mailto:sage [2013/11/19(火) 16:09:44.47 ID:???] >>301 大丈夫
303 名前:nobodyさん mailto:sage [2013/11/19(火) 16:12:49.08 ID:???] >>302 ありがとうございます。。
304 名前:nobodyさん mailto:sage [2013/11/19(火) 16:17:55.45 ID:???] >>301 一応、問題ない。 ただ、不正な値をエラーとして弾くと、ログから変な操作をする奴を突き止めやすい。
305 名前:nobodyさん mailto:sage [2013/11/19(火) 17:47:12.58 ID:???] 自分はpost値をひと通りチェックして処理入る前に 想定外のものがあったらexitして真っ白にして不気味感を演出したり headerでbad requestあたりを返すと思う
306 名前:nobodyさん mailto:sage [2013/11/19(火) 18:06:18.79 ID:???] 俺は大抵302でヤフーにお任せするわ
307 名前:nobodyさん mailto:sage [2013/11/19(火) 20:51:48.38 ID:???] headerにbad request(400)なんてあるんだね。 余談だが、404にすべきページをエラーページに飛ばしてたら ソフト404とかで注意されたよ。
308 名前:nobodyさん mailto:sage [2013/11/19(火) 20:54:19.28 ID:???] >>307 ステータスを404にしないからだな
309 名前:nobodyさん mailto:sage [2013/11/19(火) 21:10:38.01 ID:???] うわー自前で正規表現やらintvalだの使ってvalidationしてたけどfilterなんてあったのか
310 名前:nobodyさん mailto:sage [2013/11/19(火) 21:14:07.64 ID:???] <?php header("HTTP/1.0 404 Not Found"); header("Location: www.example.com/error/" ); こんな感じにしたら、なぜか、最初のヘッダーは無視されて、 結局、302でのリダイレクトになっちゃうから404を出すのは諦めたんだけど。 404出してから更にエラーページに遷移するのは無理っぽい。 fiddlerでステータスコードを確認した限りの話だが。
311 名前:nobodyさん mailto:sage [2013/11/19(火) 21:14:29.22 ID:???] >>309 FilterとCtypeは重要
312 名前:nobodyさん mailto:sage [2013/11/19(火) 21:15:39.77 ID:???] >>310 そりゃだめだろ リダイレクト先で404出さないと
313 名前:nobodyさん mailto:sage [2013/11/19(火) 21:17:35.20 ID:???] >>310 それおかしいだろ リダイレクト先のそのURLで404を返すようにしなさいよ
314 名前:nobodyさん mailto:sage [2013/11/19(火) 21:18:06.73 ID:???] リロードしてなかったのごめんね
315 名前:310 [2013/11/19(火) 21:37:04.47 ID:XtFCM7Hl] まじですか・・・。 いや、エラーページは200を返す普通のページにしてたんだけど。 もちろん、存在しないページ用の404ページ(ヘッダー404)は別に用意してるんだけど。 つーか、むしろエラーページに飛ばさないで、素直に404ページに飛ばせばいいのか。
316 名前:310 [2013/11/19(火) 21:42:44.27 ID:XtFCM7Hl] 普通、エラーページも404ヘッダーを出すものなのですか?
317 名前:nobodyさん mailto:sage [2013/11/19(火) 21:49:59.72 ID:???] エラーページで404が必要なときは404 厳密には200を返す必要があるときはない
318 名前:nobodyさん mailto:sage [2013/11/19(火) 21:54:36.62 ID:???] 404 FOT FOUNDとかechoしておいて200返してるのはかなりかっこ悪いとは思う
319 名前:310 [2013/11/19(火) 22:48:57.12 ID:9JiWXD43] レスありがとうございます。 どうも頭が混乱してしまいました。 こうすれば大丈夫でしょうか? POSTパラメーターが不正 → エラーページ (200ステータス: echo ”リクエストが不正です”) GETパラメーターが不正か不存在 → 404ページ (404ステータス: echo ”ページが存在しません”) GETパラメーターの場合に、エラーページに飛ばしていたのが、 ソフト404の原因だと思うのです。
320 名前:nobodyさん mailto:sage [2013/11/19(火) 23:00:34.26 ID:???] >>319 RFC2616か、WikipediaのHTTPステータスコードでもいいから読んで どういう時にどれを使えばいいか分かるから
321 名前:nobodyさん mailto:sage [2013/11/19(火) 23:04:02.90 ID:???] パラメーターの問題じゃない hoge.phpというファイルは存在しているんだから404を返すのは不自然
322 名前:310 [2013/11/19(火) 23:29:26.30 ID:9JiWXD43] >>320 ご指摘に従い、HTTPステータスコード等について調べてみます。 >>321 mod_rewriteで、GETパラメーターを静的URLに書き換えてリンクとして活用しているのですが、 この場合もhoge.phpは存在するとみなされるのでしょうか? (例)ttp:example.com/hoge/2013/11/29 9999とか不正な値がきたら、404に飛ばせばいいかなと思ったのですが。 わかりづらい説明ですみません。
323 名前:nobodyさん mailto:sage [2013/11/19(火) 23:44:52.18 ID:???] mod_rewriteでやってもアプリケーション側で弾かない限り 実質的にはhoge.php?y=2013&m=11&d=29みたいな感じで見れると思うけど hoge.phpが存在するというのを表向きに知られたくないのなら好きにすればいいんじゃね 目的とか実装によりけりだよそのへんは
324 名前:nobodyさん mailto:sage [2013/11/19(火) 23:51:53.10 ID:???] >>322 ファイルがあろうがなかろうが、そのURLを存在させたくなければ404でよい > (例)ttp:example.com/hoge/2013/11/29 > 9999とか不正な値がきたら、404に飛ばせばいいかなと思ったのですが。 404が適切。
325 名前:nobodyさん mailto:sage [2013/11/19(火) 23:59:01.39 ID:???] ブログ記事を表示するページのurlが example.com/post/ブログ記事のid だとして、存在しないidだったときは404返してたんだけど間違ってる?
326 名前:310 [2013/11/20(水) 00:10:19.19 ID:VLPy2k85] >>323 >>324 (例)ttp:example.com/hoge/2013/11/29 結論として、このurlの不正な値の場合に、200のエラーページに飛ばしていたのがソフト404の原因ですよね。 ご指摘くださったことを参考に、もう一度、ページの構成と遷移、 ステータスコードの関係について検証したいと思います。 ありがとうございました。
327 名前:nobodyさん mailto:sage [2013/11/20(水) 00:31:49.62 ID:???] >>325 あってる
328 名前:nobodyさん mailto:sage [2013/11/20(水) 07:53:07.64 ID:???] 訳もわからず404や403を返しちゃうのは恥ずかしいよね。 自分で書いてるスクリプトなのにw 400と500のどちらかを返すだけの方が無難だよねw
329 名前:nobodyさん mailto:sage [2013/11/20(水) 08:01:27.90 ID:???] >>328 君は存在してることが恥ずかしい
330 名前:nobodyさん mailto:sage [2013/11/20(水) 09:35:19.42 ID:???] >>328 httpステータスコードでググってこい
331 名前:nobodyさん [2013/11/20(水) 11:28:24.00 ID:35fCUlou] 通常、ファイルが存在しない場合に備えて、.htaccessに次の様な設定をすると思います。 ErrorDocument 404 /error/404.php(404ヘッダーを出力) ここから質問です。 次のURLのid値が不正な場合、404となるよう、同様に、/error/404.php に遷移できますか? ttp://example.com/post/id header('Location: ttp://example.com/error/404.php'); post.phpで出すこのヘッダーは302ですが、遷移すれば、結果として404扱いになるのでしょうか?
332 名前:nobodyさん mailto:sage [2013/11/20(水) 11:33:09.19 ID:???] その 404.php は何を返すの?
333 名前:331 [2013/11/20(水) 11:36:20.51 ID:35fCUlou] >>332 オリジナルに作成した、いわゆる404ページです。 もしかしたら、(404ヘッダーを出力) という部分は間違いかもです。
334 名前:nobodyさん mailto:sage [2013/11/20(水) 11:57:47.58 ID:???] UAがリダイレクトを許可する設定なら404 そうでないなら302 不安ならPHP側で処理に合わせてheaderとresponse返すようにすればおk
335 名前:nobodyさん mailto:sage [2013/11/20(水) 12:22:36.67 ID:???] >>331 Locationは「リソースの別の場所を案内する」ために用いられるもの 「リソースが見つからない」場合の挙動は定義されていない 各ベンダーの実装は404とLocationを一緒に出すと無視される よって include('error/404.php'); 等とするしかない
336 名前:331 [2013/11/20(水) 12:41:10.58 ID:35fCUlou] >>334 >>335 ありがとうございます。 header("HTTP/1.0 404 Not Found"); このヘッダー出力だけで、自動で遷移する、ErrorDocument 404 と 同様の効果があると良いのですが、どうも無理なようですね。 <?php //idチェック処理後不正な場合 header("HTTP/1.0 404 Not Found"); include('error/404.php'); exit; やはり、こうして読み込むしかないということですね。 ありがとうございました。
337 名前:nobodyさん mailto:sage [2013/11/20(水) 12:43:47.50 ID:???] 404.php側でヘッダに404を出せよというだけじゃね?w
338 名前:nobodyさん mailto:sage [2013/11/20(水) 12:48:58.33 ID:???] >>337 ソフト404エラーでググれ
339 名前:nobodyさん mailto:sage [2013/11/20(水) 17:14:42.69 ID:???] >>337 だよね >>338 ?
340 名前:nobodyさん mailto:sage [2013/11/20(水) 17:32:58.48 ID:???] >>337 404.phpに移動していいならそれでいいね。 ただ、.htaccessにErrorDocument設定をしたのと同じ振る舞いを希望するなら、その手じゃ駄目なんじゃ。
341 名前:nobodyさん mailto:sage [2013/11/20(水) 17:55:26.35 ID:???] 変な質問ですみません。 最近転職してPHPを触るようになったのですが、Linux上のvimで開発しています。 開発時にインデントをある程度入れると思うのですが、普通はどのようにインデントを 入れるのが正しいソースの書き方なんでしょうか? 今触っているソースは特に改行やTABインデントがなく、そのまま1行でずっと 書かれてあり可読性としてどうなのかなと思いつつも、そういうルールかもしれないと思い 自分も特にインデント等を入れずに開発しているのですが。。 わかりにくい書き方で申し訳ありませんが、どなたか教えて頂けないでしょうか
342 名前:nobodyさん mailto:sage [2013/11/20(水) 17:57:19.88 ID:???] 難読化してんのかね? 整形して編集してリリース時にまた改行消す、とかでいいんじゃ?
343 名前:nobodyさん mailto:sage [2013/11/20(水) 17:58:27.74 ID:???] コーディング規約ないならご自由に 後で自分が追うことになっても苦労しない程度にね
344 名前:nobodyさん mailto:sage [2013/11/20(水) 18:00:00.26 ID:???] >>337 >>339 次の文は正しい?それとも間違い? 『転送元で302を出しても、転送先で404を出せば「ソフト404」にならない』
345 名前:nobodyさん mailto:sage [2013/11/20(水) 18:00:42.18 ID:???] >>341 インデント、改行の入れ方はいろいろある www.infiniteloop.co.jp/docs/psr/psr-2-coding-style-guide.html ja.phptherightway.com/ のコーディングスタイル いろいろあってどれが正しいとかはないが、会社やプロダクトでどうなっているか次第 一行に書くのがルールですって言われたら会社辞めちゃいそう
346 名前:nobodyさん mailto:sage [2013/11/20(水) 18:01:44.56 ID:???] >>344 Googleの話だよな?ソフト404って 正しいよ。ただ転送は301がオススメ
347 名前:nobodyさん mailto:sage [2013/11/20(水) 18:05:42.61 ID:???] >>346 そうGoogleの話。 理解できた。ありがとう!
348 名前:nobodyさん mailto:sage [2013/11/20(水) 18:05:59.79 ID:???] >>342-343 パッと見た時に「読みにくい」と思ったのが最初です 例えば $hoge = array('aaa' => $aaa, 'bbb' => $bbb); のようなものがあったとして(実際はもっと多いです) $hoge = array ( 'aaa' => $aaa, 'bbb' => $bbb ); のように書いた方が後で見た時に読みやすいと思いまして。。 >>345 資料の方ありがとうございます。 そちらを見てみます。
349 名前:nobodyさん mailto:sage [2013/11/20(水) 18:07:21.19 ID:???] >>341 それって最終的にそうしてるってだけで、 編集用のコメントが入ってたりインデントもちゃんと入ってるソースが別にあるでしょ? つうか会社に人に聞きなさいよ。
350 名前:nobodyさん [2013/11/20(水) 18:08:46.70 ID:7VTPw3qr] 変なこと聞きますが、base64_encodeでダブルクオーテーションが 含まれる文字列に変換されることってありえませんよね?
351 名前:nobodyさん mailto:sage [2013/11/20(水) 18:11:55.88 ID:???] インデント、手で入れてるんですか?
352 名前:nobodyさん mailto:sage [2013/11/20(水) 18:13:31.78 ID:???] >>350 ないと思うけど
353 名前:nobodyさん mailto:sage [2013/11/20(水) 18:14:21.21 ID:???] >>341 インデントはスペース4つが普通。 いろんな文法チェッカーツールも、デフォルトではタブでインデントしてると警告を出すのが多い。
354 名前:nobodyさん mailto:sage [2013/11/20(水) 18:17:04.21 ID:???] >>349 ないんです 聞いてみたら「昔からこうだった」らしいので。 そういうものなのかなと少し疑問に思って質問しました。すみません >>353 TABじゃないらしいですね。 >>345 さんの教えてくれたページを見て驚きました スレ汚し申し訳なかったです
355 名前:nobodyさん [2013/11/20(水) 18:17:34.09 ID:7VTPw3qr] >>352 ですよね。CSVファイルに保存するとき、base64_encodeして保存してるのですが、 たまにダブルクォーテーションが余分についてファイルが壊れている事があります。 原因が全くわからないので、バグを見つけられずに困っていました。 他の原因を探ってみます。
356 名前:nobodyさん mailto:sage [2013/11/20(水) 18:19:19.18 ID:???] >>354 PHPのインデントはスペース派が多いけど どっちでもいいよ。会社やプロダクトで決められたほうを使うべきかな
357 名前:nobodyさん mailto:sage [2013/11/20(水) 18:20:47.24 ID:???] >>356 PSR-2がスペース使うのがMUSTだから、どっちでもいいならスペース使っといた方がいい。
358 名前:nobodyさん mailto:sage [2013/11/20(水) 18:43:18.00 ID:???] >>341 vimの設定ちょこちょこしておけばインデントは勝手にやってくれるよ。 インデントを入れずに書くのはやめといたほうが。
359 名前:nobodyさん mailto:sage [2013/11/20(水) 18:56:19.40 ID:???] >>354 やべえなその会社w お前が引っ張っていってやれ
360 名前:nobodyさん mailto:sage [2013/11/20(水) 19:11:37.50 ID:???] >>357 PSR-2に従うならだな 従うかはMUSTではないからな うちはPSR-1までは従ってるけど、コーディングスタイルは全然違うな
361 名前:nobodyさん mailto:sage [2013/11/20(水) 19:29:19.34 ID:???] >>346 いい加減な事を教えないでくれ 301はリソースが一時的に別の場所に「ある」時に使う ソフト404エラーは404を返すべきところで「404を返さない」事を指す
362 名前:nobodyさん mailto:sage [2013/11/20(水) 19:45:20.59 ID:???] >>361 違うよ、まず301は恒久的だぞ、一時的は302 301にしろ302にしろ、リソースが新しいURIに移動したことを示す。 404はURIに一致するリソースが見つけられない、リソースはあるがリクエストを拒否したい等々 移動させることは勝手だし、リソースのあるなしは関係ない。 >ソフト404エラーは404を返すべきところで「404を返さない」事を指す その通りだが、そのURIを301にしてその先で404を返すのは勝手。 その場で404を返そうがどっちでも良い 返せるならその場の方が好ましいとは言えるかもしれない
363 名前:nobodyさん [2013/11/20(水) 19:48:23.17 ID:ZNkS7nHy] PHPで重複組合せを簡単にやるにはどうしたらよいでしょうか? もし関数やライブラリがあれば教えてください。 無ければサンプルコードを教えてください。よろしくお願いします。
364 名前:nobodyさん [2013/11/20(水) 19:52:53.93 ID:ZNkS7nHy] 補足です。 仮に、[1, 2, 3, 4, 5] の5つから3つ選び出す場合、 $result = [ [1, 1, 1], [1, 1, 2], [1, 1, 3], [1, 1, 4], [1, 1, 5], [1, 2, 2], [1, 2, 3], [1, 2, 4], [1, 2, 5], ... ... [1, 5, 5], [2, 2, 2], [2, 2, 3], [2, 2, 4], [2, 2, 5], [2, 3, 3], [2, 3, 4], [2, 3, 5], ... ... ... ... [5, 5, 5] ]; このように出力したいです。
365 名前:nobodyさん mailto:sage [2013/11/20(水) 20:08:13.76 ID:???] PHPマニュアルが変わった?
366 名前:nobodyさん mailto:sage [2013/11/20(水) 20:10:39.68 ID:???] 変わった
367 名前:nobodyさん mailto:sage [2013/11/20(水) 20:39:38.18 ID:???] >>362 > 違うよ、まず301は恒久的だぞ、一時的は302 ごめん、俺が取り間違えてる > 404はURIに一致するリソースが見つけられない、リソースはあるがリクエストを拒否したい等々 > 移動させることは勝手だし、リソースのあるなしは関係ない。 404は適当な理由による拒否として使うコードではない (RFC 2616#10.4.5) 拒否する理由に合わせて400、401、403、406等が用意されている > その場で404を返そうがどっちでも良い > 返せるならその場の方が好ましいとは言えるかもしれない Googleが決めたソフト404エラーを回避する義務がないのは同意するけど 無いものを無いと知っててクライアントに教えないのはHTTPサーバーとして行儀が悪い 今回のケースではPHPで対応できるのだから404を返すべき。この点は譲れん
368 名前:nobodyさん mailto:sage [2013/11/20(水) 20:59:29.17 ID:???] >>364 $a = [1, 2, 3, 4, 5]; print_r (combine($a,3)); function combine($a, $n) { if($n==1) return $a; $result = array(); foreach ($a as $v1) foreach (($n==2?$a:combine($a,$n-1)) as $v2) $result[] = array_merge((array)$v1, (array)$v2); return $result; }
369 名前:nobodyさん mailto:sage [2013/11/20(水) 21:02:06.21 ID:???] >>367 10.4.5 This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable. 書いてあるよ。 >無いものを無いと知っててクライアントに教えないのはHTTPサーバーとして行儀が悪い 301と404のセットで教えてるから良いんだよ 301を返さずに404の方が好ましいかもしれない。だがMUSTじゃないし問題なし
370 名前:nobodyさん mailto:sage [2013/11/20(水) 21:25:52.44 ID:???] >>369 > 10.4.5 それは404の説明ではなく commonly used な 「リクエストを拒否する理由を隠したい、適当なものがない時にも使われている」という使用例だ ソフト404エラーの話とはまた違う > 301と404のセットで教えてるから良いんだよ だから選択ではなくセットで使えという事が ソフト404エラーに該当するしHTTPサーバーとしての振る舞いとしても良くないと言ってるんだ
371 名前:nobodyさん mailto:sage [2013/11/20(水) 21:31:48.37 ID:???] まだやってたのか
372 名前:nobodyさん mailto:sage [2013/11/20(水) 21:38:05.31 ID:???] >>369 >>344 に対する回答>>346 が間違い それだけの話だ
373 名前:nobodyさん mailto:sage [2013/11/20(水) 21:42:05.18 ID:???] >>370 HTTPステータスの話とソフト404の話をごっちゃにしないでくれ ソフト404はあくまでGoogleがこれ404がいいよねってURLだ あくまで提案であり、このままだと404と見なすよって意味だ 元の質問が、302→404としたらソフト404でなくなるかだ 答えは「なくなる」だ。これはHTTPステータスではなくGoogleの話だ >それは404の説明ではなく commonly used な >「リクエストを拒否する理由を隠したい、適当なものがない時にも使われている」という使用例だ >ソフト404エラーの話とはまた違う そのとおり、最初からソフト404エラーとしてそれを説明してないので問題ない
374 名前:nobodyさん mailto:sage [2013/11/20(水) 21:45:08.54 ID:???] >>372 どうみてもあってるんですが、どこが間違ってるんでしょうか?
375 名前:nobodyさん mailto:sage [2013/11/20(水) 21:48:25.66 ID:???] 厳密には https://support.google.com/webmasters/answer/181708?hl=ja >存在しないページに対して 404 と 410 以外のコードを返すこと(または 404 を返す代わりにホームページなど他のページにリダイレクトすること)は、問題となる可能性があります。 と書いてはあるんだ 実際は302か301で404に飛ばしても、ソフト404エラーの解決にはなる
376 名前:nobodyさん mailto:sage [2013/11/20(水) 22:06:42.02 ID:???] >>373 そうだな対Googleの話に絞ろう https://support.google.com/webmasters/answer/181708?hl=ja > 存在しないページに対して 404 と 410 以外のコードを返すこと > (または 404 を返す代わりにホームページなど他のページにリダイレクトすること)は、問題となる可能性があります。 > まず、その URL にページが存在することが検索エンジンに明示されます。 > その結果、URL がクロールされ、コンテンツがインデックスに登録される場合があります。 質問者はそのURLに対するリクエストをリダイレクトすると ソフト404エラーにならなくなるのか?を訪ねているのだから答えはNOだ
377 名前:nobodyさん mailto:sage [2013/11/20(水) 22:13:11.42 ID:???] >>376 どうやってコンテンツがインデックスに登録されるんだい? 404返してるページはgoogleはインデックスしないぞ
378 名前:nobodyさん mailto:sage [2013/11/20(水) 22:17:24.84 ID:???] >>375 ごめんリロードしてなかった 俺のサーバーじゃないならリダイレクトしようが何しようが全然構わないけど、 初心者が見に来るスレだからこそ理想的な手段でやって欲しい
379 名前:nobodyさん mailto:sage [2013/11/20(水) 22:23:26.54 ID:???] スレチだしそろそろ終わらせようか >>377 404や410を返さないURLをどう扱うかは俺ではなくGoogleが決める事 そしてソフト404エラーを回避するためには404、410を返す以外の解決手段が書かれていない それ以上何を語ればいいんだ
380 名前:nobodyさん mailto:sage [2013/11/20(水) 22:26:20.27 ID:???] >>344 >>346 404か410をその場で返す方が 301や302を利用して404に飛ばすより好ましい ってレスすれば良いだけではないか >>361 の暴走が全てを狂わせた感じだな
381 名前:nobodyさん mailto:sage [2013/11/20(水) 22:39:23.48 ID:???] >>380 はいはい俺の暴走俺の暴走 質問者も居ないみたいだしもう終わらせよう
382 名前:nobodyさん mailto:sage [2013/11/20(水) 22:39:40.62 ID:???] >>377 これこれ。 > (または 404 を返す代わりにホームページなど他のページにリダイレクトすること) 404を返さずに404らしきページを返すことを、google用語でソフト404という。 だから、404らしきページを返すんなら、ちゃんとステータスコードも404にしろよってことだ。