Google Search Consoleでサイトをチェックしていると、たまにWordPressのアップロードディレクトリ内がインデックスされていることがあります。
例えば、当サイトであれば「https://nelog.jp/wp-content/uploads/」のようなURLの場所。
「/wp-content/uploads/」ディレクトリ内は、WordPressの仕様として表示されるようになっているようです。中身もほぼ公開している画像(ファイル)なので、表示されても取り立てて問題があるわけではありません。
けれど、
uploadsの一覧ページが、Googleにインデックスされるのはあまり好ましくない
と思う人も中にはおられると思います。
何せ、こんなページを訪問者の方に見てもらいたいわけでは無いと思うので。
先日、僕が運営しているフォーラムの方に「一覧ページを表示したくない」という質問が来たので、僕の備忘録がてら分かりやすく方法を書き記しておこうと思います。
目次
「一覧ページ(Index of)」が表示される原因
まず、こんな感じで「一覧ページ(Index of)」が表示されるのは、ディレクトリ内にindex.html、index.htm、index.php…他ファイルがないから表示されます。
ですので、ディレクトリ内すべてに空のindex.htmlファイルを置いてやれば、問題は解決します。
けれど、「/wp-content/uploads/」ディレクトリ内にある全てのディレクトリで行うとなると作業は膨大です。
全てのディレクトリに対して「空のindex.html」ファイルを置いていくのは、現実的な方法ではないでしょう。
なので以下では、.htaccessファイルを利用して「一覧ページ(Index of)」に対してアクセス制限を行う方法を紹介します。
.htaccessで制限する方法
「一覧ページ(Index of)」表示を制限するにはまず、サーバーツール、もしくはFTPソフトを用いて、サイトの.htaccessファイルを開きます(無い場合は作成)。
そのファイルの最後尾に以下のように追記するだけです。
Options -Indexes
何か書き込まれている場合は、.htaccessファイルの最後尾に以下のように追記するだけで良いかと思います。
上記のように追記した後、「/wp-content/uploads/」ディレクトリ内にアクセスしてみると、以下のように403エラーが表示され、アクセスが制限されていることが分かります。
.htaccessでOptions使用に制限がかかっているサーバーの場合
例えば、さくらインターネットなどのレンタルサーバーでは、Optionsは利用できません。
そういう場合は、.htaccessに以下を書き加えます。
DirectoryIndex index.html index.htm index.php index.cgi .ht
DirectoryIndex、サイト訪問者がディレクトリをリクエストしたときに調べるリソースのリストを設定する記述です。
ディレクトリへのアクセスがあった場合index.html → index.htm → index.php → index.cgiとファイルをたどっていき、無い場合は「.ht」となり、403を返します。
mixhostだとサーバーの管理画面から簡単に制限できる
今回、「一覧ページ(Index of)」について調べていて気づいたのですが、僕が現在使用しているmixhostだとサーバーの管理パネルから簡単に制限を行うことが可能です。
mixhostで制限する方法
mixhostで制限を行うには、まずサーバーの管理画面(cPanel)にログインします。
「詳細」項目にある「インデックス」を選択します。
フォルダ一覧が表示されるので、「public_html」を選択します。
「“/home/ログイン名/public_html” のインデックスの設定」という画面が表示されると思うので、「インデックスなし」を選択し「保存」ボタンを押してください。
このようにすることで、mixhostでは一覧ページに403アクセス制限をかけることができます。
サーバーの機能で行う場合は手軽ですし、例え不具合が出たとしても設定を元に戻すだけなので簡単です。
参考 ファイルの一覧(Index of)を非表示にする方法 ? mixhost ヘルプ&サポート
まとめ
今回、なるべく手間をかけずに「一覧ページ(Index of)」に対して403アクセス制限をかける方法を紹介しました。
紹介した方法行うことで、Wordpressのアップロードディレクトリ内が丸見えになることを防ぎ、Googleなどの検索エンジンにインデックス登録されるのを防ぐことが出来るかと思います。
もちろん、既にインデックスされている場合は、次のクロールが訪れて処理が終わればインデックスから除外されることと思われます。
mixhostサーバーを使っている場合は手軽に行えます。
公式 mixhost
mixhostの詳細はこちら。
わいひらさん、こんにちは!
2月初旬に「Cocoon」を導入して以来、無料なのに様々な対応をしてくださる運営姿勢に心を打たれ、すっかりファンになりました笑
「一覧ページ(Index of)」の件ですが、サーバー側から割り当てられる初期URLみたいな?「******.mixh.jp」にアクセスすると、一覧になって見えるから、それを防ごうということですよね? cPanelで設定しましたが、解除したら複数の独自ドメインが出ていましたので、この解釈で間違いないと思い込んでいます(^^;
何も知らずにやっていて、丸見えだったようなので、早いうちに対応できて良かったです。