WordPressでサイトを構築中、外部から見られないようにBasic認証を掛けたりしますが、Wordpressの場合、これがうまく機能しません。
で、いろいろ調べましたが何やらめんどくさそうなので簡単な方法で対応しました。
IPアドレス制限です。
自信のグローバルIPを調べて、.htaccessに以下のような記述をするだけです。
order deny,allow deny from all allow from 調べたIPまたはドメイン
都度IPが変わってしまう場合でも、それほど手間にはならないと思います。
お客様に見て貰う場合はIPを追加するか、一時的に解除しないといけません・・・
特定のURLにアクセスすれば、グローバルIPが.htaccessに追記されるようにすればと思ったんですが、ドメインに対してIP制限を掛けてしまうのでどうしようもないですよね。
ディレクトリが違えば以下のような適当に作ったコードで何とかなりそうですが。
<?php $path = "./wp/.htaccess"; $ip = $_SERVER["REMOTE_ADDR"]; $res = Writer($path, $ip, 3); if ($res) { echo $ip."を追記しました。"; } else { echo "IPが存在するため更新していません。"; } exit; function Writer($path, $ip, $cnt) { $files = file($path); foreach ($files as $key => $val) { if (preg_match("/allow from ([0-9])/i", $val) && $i<($cnt-1)) { $buf[] = $val; $key_end = $key; if ("allow from ".$ip == trim($val)) { $flg = true; return false; } $i++; } else { $buf[] = $val; } } array_splice($buf, $key_end+1, 0, "allow from ".$ip."\n"); $buf = implode("", $buf); $fp = fopen($path, "w"); flock($fp, LOCK_EX); fputs($fp, $buf); flock($fp, LOCK_UN); fclose($fp); return true; } ?>
んー、何か良い方法はないものか。
追記:パスワードを簡単に掛けられるプラグインがあるんですね。
「Password Protected」で検索してください。