- ベストアンサー
存在しないディレクトリやファイルにアクセスできます
- 解析ツールを見ていると存在しないディレクトリやファイルにアクセスがあります。確認すると、画像やCSSが飛んだ状態でテキストだけが表示されているのですが、原因不明です。お解りになる方のご意見、ご指導をお願い致します。
- 解析ツールによると以下の存在しないページにアクセスされているので確認すると、画像やCSSが飛んだ状態で aa_01.php や aa_02.php のテキストだけが表示されています。※実際にはもっとたくさんあります。
- しばらく放置していましたが、最近はYahooやGoogleの検索でもヒットするようになり、困っております。ご指導どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
元urlでのページについては、そう検索順位は変わらないかとも思うけど、同じページを表示するのに複数のurl が存在するのと同じ状態なので、canonical指定で、検索エンジンに収録してほしい原本urlを伝えると、どこかの誰かのリンクで変なpath_infoが付いていても、検索サイトでの表示では、原本urlが表示されるようになると思います。 <link rel="canonical" href="/aa_02.php"> 必ず絶対パスで指定するようにして、この一行をaa_02.phpから出力するhtml の head 要素内に置きます。 以下サイトを参考にしてください http://web-tan.forum.impressrd.jp/e/2009/03/05/5112 http://d.hatena.ne.jp/mitaina/20090831/1251716680
その他の回答 (1)
- mpro-gram
- ベストアンサー率74% (170/228)
段階をおって説明すると 1.このような url へなぜアクセスできるか:サーバー動作について >http://hoge.com/aa_02.php/img/ppp/img/favicon/pdf/img/banner/yyyyy.png たとえば、上記urlでアクセスしてきたとして、先頭のaa_02.php が存在すれば、サーバー側では、aa_02.php を呼び出して、.php/ 以降の文字列は、$_SEVER['PATH_INFO'] として渡されます。 またアクセス時の絶対パス が $_SERVER["REQUEST_URI"] に記録されるので、アクセスログとしてこれを記録すると、上記のページが表示されてるかのようなログとなります。 実際には、aa_02.phpの出力がブラウザに返されるので、html表示となります。 画像やcssが表示されないのは、相対パスで記述しているせいでしょう。 2.相対パスと絶対パス:ブラウザ動作について http://hoge.com/aa_02.php のページで img/banner/yyyyy.png と相対パスで画像表示しているのなら問題ないですが、 http://hoge.com/aa_02.php/ と最後に/が付いてるページで、ブラウザがその画像の相対パスを解釈すると、最後の/ に相対パス名を繋いで画像を取得しようとします。 よって http://hoge.com/aa_02.php/img/banner/yyyyy.png へアクセスしてしまいます。 しかし、このurlでは前述のように、aa_02.phpが出力するhtml文書なので、画像として表示できません。 2.なぜこのようなurlが出回るのか? 単に誰かがそのようなurlに変更してアクセスしてきただけなら、検索サイトには載らないと思いますが、どこかサイト内に http://hoge.com/aa_02.php/ と最後に / の付いたリンクがあるのだと思います。 ブラウザとしては、画像を表示しないで終わるのみですが、しかし、検索ロボットは、得られたものがhtml文字列であったなら、その中にある相対パスを次々たぐっていくのではないかと思われます。そして最終的に先頭にあげた例のように2重3重にパスが連なります。 3.対応は? 画像や css などへのパス表記を相対パスではなく、すべて絶対パス(/から開始する) に変更することで、よけいな相対パスをたぐられないようにしましょう。 せっかく内容の良いサイトでも、html表示上おかしな事になってると、検索サイトでの評価が落ちてしまいます。
お礼
丁寧で判りやすい解説をありがとうございます。 >2.なぜこのようなurlが出回るのか? >どこかサイト内に http://hoge.com/aa_02.php/ と最後に / の付いたリンクがあるのだと… 原因を探してみましたが発見できませんでした。 >3.対応は? >パス表記を相対パスではなく、すべて絶対パス(/から開始する) に変更 相対パスから絶対パスに変更する手間を省いて Redirect permanent /aa_01.php/ http://hoge.com/ Redirect permanent /aa_02.php/ http://hoge.com/ Redirect permanent /bb_01.php/ http://hoge.com/ とりあえずトップページに飛ばしました。 それぞれのページに飛ばせると良かったのですが、方法が見つけられませんでした。 >html表示上おかしな事になってると、検索サイトでの評価が落ちてしまいます。 時間が取れたら絶対パスに書き換えようと思いますが 長期間の放置はよろしくないですか? ご意見を頂けましたら幸いです。 どうぞよろしくお願いします。
お礼
丁寧なご指導を頂戴しありがとうございます。 canonicalについてぜんぜん知らなかったので勉強になりました。 URLの統一について記述されていたので、ついでにwww有り無しや、トップページのindex.html有り無しについても統一しました。 ありがとうございました。