WordPressは色んなことを自動制御してくれる反面、管理者の知識不足により、意図しないページが作成されていることもあります。
その1つがこれ。
ファイルをアップロードすると専用ページを作ってくれる、という機能。
例えば、何の設定変更も加えていないWordpressに画像をアップロードすると、下記のような専用ページが作成されます。(テーマはcocoon)。
私も最初の1年ほどはまったく気づかなかったページです。
色んなフォーラムを見ていた時、偶然このことを知り、自分のサイトで試したところ当てはまりました。
URLは「https://ドメイン/ファイル名/」でしたが、各種設定により異なる可能性があります。
最も確実に確認する方法は、メディアページに「添付ファイルのページを表示」というリンクがあるかどうかです。
管理画面に入り、左のメニューから「メディア」→「ライブラリ」を開きます。
表示された画像を適当にクリックすると添付ファイルの詳細がポップアップすると思うので、左側のメニューに、以下の画像のように「添付ファイルのページを表示」があるかを確認してください。
このリンクをクリックし、画像ページが表示されれば作成されている、表示されなければ何らかの対策がされている、ということかと思います。
「メディア」にアップロードされたファイルは1つずつ、こういったページが作成されるようです。
必要性を感じない方は以下の方法を試してみてください。
- 専用ページに「noindex」を付与する
- 専用ページが表示されたらリダイレクトさせる
noindexを付与
専用ページにはメディアが1つしか掲載されておらず、説明も何もありません。
そのため、Googleにクロールされてしまうと「このページは登録する価値がない。でもこのサイトの人は登録して欲しいと思ってるんだな。残念な価値観だ」というのは極論ですが、サイト全体の評価を下げられる可能性があります。
そうならないためクロールに「このページは登録しないでいいよ」という合図、noindexを付与する必要があります。
利用しているテーマがcocoonの場合は簡単です。
cocoon設定のSEOタブの中に「添付ファイルページをnoindexとする」という項目があるので、チェックを入れるだけです。
私は最初からcocoonを利用していたので、今までさほど困らなかったんだと思います。
【参考】Cocoon以外の方は以下をfunctions.phpに追記することで対応可
/* メディアページをインデックスしない */
function my_add_noindex_attachment(){
if (is_attachment()) {
echo '<meta name="robots" content="noindex,follow" />';
}
}
add_action('wp_head', 'my_add_noindex_attachment');
専用ページが表示されたらリダイレクトさせる
noindex付与が解決したら、次はリダイレクトです。
既にインデックスされていたり、外部サイトからリンクされてる可能性がある場合は有効です。
専用ページは「attachment.php」というファイルで制御されるようです。
このファイルの中身を書き換えれば良いわけですが、cocoonにはこのファイル自体がありません。
メモ帳か何かで空ファイルを作成してFTPでアップロードするか、サーバーフォルダに直接アクセスして空ファイルを作成してしまいましょう。
作成場所、アップロード場所は、cocoon-child-masterフォルダの中です。
このフォルダにポンと入れてしまえばいいです。
次は、このファイルの中身を書き換えます。
<?php
// 添付元(投稿、ページなど)のある添付ファイルページの場合、添付元にリダイレクト
if ( $post->post_parent ) {
wp_redirect( get_permalink( $post->post_parent ), 301 );
}
// 添付元のない添付ファイルページの場合、トップページにリダイレクト
else {
wp_redirect( home_url(), 302 );
}
?>
試しに先ほどの「添付ファイルのページを表示」を押してみてください。
無事にリダイレクトされれば成功です。