※当サイトにはプロモーションが含まれています。
ユーザーがLINEやメール登録をしてくれた時、または感想を送ってくれたりした時など、下記のような流れで特典ファイルを配ることがあると思います。
しかし、何も対策をせずに、配布するファイルをサーバーにアップロードすると、Googleの検索結果に表示されてしまう可能性があります。
下記は、あるサイトで、PDFファイルに絞って検索した結果です。
PDFファイルは、プレゼントで配っているから検索結果に表示されては困るにゃ
今回、phpファイルを設置して、特典ファイルなどをGoogleに検索されないようにする方法について解説します。
なお、ワードプレス(WordPress)で解説していますが、それ以外のサイトでも応用可能です。
単純に、robots.txtファイルを設置して、検索結果から除外する方法についてはこちらをご参照ください。
Google検索には、様々な検索オプションがあって、PDFやエクセルなど、ファイルの種類を絞って検索する事ができます。 例えば、PDFファイルを探したい場合は次のように入力します。 filetype:拡張子 キーワード …
検索結果に表示させずに特典ファイルなどをダウンロードさせる方法
構成イメージとしては、下記のような感じになります。
ファイルをダウンロードする時は、download.phpにアクセスさせて、そこからファイルをダウンロードさせるようにします。
①ディレクトリ構成
ファイルやフォルダの構成は下記のようになります。
/home/(ユーザー名)
├── public_html (または www、htdocs など)
│ ├── wp-content
│ ├── wp-includes
│ ├── wp-admin
│ ├── module(※新規作成)
│ │ └── download.php(※新規作成)
│ └── .htaccess
├── dwload(※新規作成)
│ ├── file1.pdf
│ ├── file2.xls
│ └── file3.psd
ワードプレスがインストールされている同じ階層に、「module」フォルダを作成し、その中にdownload.phpを作成します。
また、ダウンロードしてもらうファイルを置く場所「dwload」フォルダも作成します。
なお、ワードプレスのフォルダ構成で説明していますが、その他のサイトでも基本的な構成は同じです。
②download.phpの作成
download.phpを作成します。
<?php
// 許可されたファイル拡張子のリスト
$allowed_extensions = ['pdf', 'xls', 'xlsx', 'psd', 'zip'];
// ダウンロードするファイルの名前を取得します
if (!isset($_GET['file'])) {
die('ファイルが指定されていません');
}
$file_name = basename($_GET['file']);
$file_path = '/home/(ユーザー名)/dwload/' . $file_name;
// ファイルの拡張子を確認します
$file_extension = pathinfo($file_path, PATHINFO_EXTENSION);
if (!in_array($file_extension, $allowed_extensions)) {
die('この種類のファイルは許可されていません');
}
// ファイルが存在するか確認します
if (!file_exists($file_path)) {
die('ファイルが存在しません');
}
// ファイル情報を取得します
$file_size = filesize($file_path);
// 適切なヘッダーを設定します
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $file_name . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . $file_size);
// ファイルを読み込んで送信します
readfile($file_path);
exit;
?>
なお、$file_path = ‘/home/(ユーザー名)/dwload/’ . $file_name;
にある(ユーザー名)の箇所は、ご自身の状況にあわせて修正をしてください。
これは、どの場所に、ダウンロードするファイルがあるかを指定しています。
修正が完了したら、download.phpとして保存します。
次に、wp-contentと同じ階層に「moduleフォルダ」を作成します。
そして、作成したmoduleフォルダ内に、download.phpをアップロードしましょう。
③保護したいコンテンツのアップロード
Googleに検索させない、ユーザーからも直接フォルダ内を見ることができないようにする為、保護したいコンテンツをワードプレスがインストールされている階層より上のディレクトリに保存します。
今回は、「/home/(ユーザー名)」の場所に、dwloadフォルダを新規作成します。
保護したいコンテンツを、作成したdwloadフォルダ内にアップロードします。
④ダウンロードリンクの設置
ダウンロードリンクは、以下の形式になります。
https://(あなたのドメイン)/module/download.php?file=(ファイル名).pdf
?file=(ファイル名).pdfとありますが、?はリクエリストリングの開始をあらわすものです。
この後に、パラメータを記載することで、設定したパラメータの情報を渡します。
例えば、ファイル名が、secret.pdfというファイル名なら、「?file=secret.pdf」というのを、download.php?の後ろに記載します。
WEBサイトの場合は、ボタンとして設置することが多いと思うので、以下の様な感じで記載します。
<a href="https://yourwebsite.com/module/download.php?file=excel.xls" class="btn btn-primary">Download Excel File</a>
<a href="https://yourwebsite.com/module/download.php?file=your-file.pdf" class="btn btn-primary">Download PDF</a>
<a href="https://yourwebsite.com/module/download.php?file=photoshop.psd" class="btn btn-primary">Download Photoshop File</a>
最後に、URL(ボタン)をクリックするなどして、実際にダウンロードできるかを試してみましょう。
補足:ダウンロードできない場合
ダウンロードするファイル名や、フォルダの構成などが間違っていないけど、ダウンロードできないことがあるかもしれません。
これは、.htaccessファイルの設定により、module フォルダへのアクセスが禁止されている可能性があります。
その場合は、.htaccessファイルを編集して、module フォルダへのアクセスを許可する必要があります。
下記は、module フォルダへのアクセスを許可する参考コードです。
※Directoryの箇所を変更する必要があります。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# moduleフォルダへのアクセスを許可する
<Directory /home/username/public_html/module>
Order allow,deny
Allow from all
</Directory>
ただ、ワードプレスの.htaccessファイルは、インストールしたプラグインなどの設定も書き込まれることがあります。
その為、もし編集される場合はオリジナルファイルを保存しておくのはもちろんですが、よくわからない場合は影響範囲が大きいので編集しないでください。
失敗すると、WEBサイト及び、管理画面にブラウザからはアクセス不能になるためです。
まとめ
最後にポイントをまとめておきます。
- dwload フォルダに配布ファイルを保存し、Webアクセスから保護します。
- download.php を module フォルダに設置し、ファイルのダウンロードを管理します。
- module フォルダへのアクセスが禁止されている場合のみ、htaccess ファイルで module フォルダへのアクセスを許可します。
この構成により、Google検索に引っかからないようにして、ファイルを配布することができます。