Archive for the ‘WordPress’ Category

WordPress – 海外からのアクセスを遮断する – PHP

水曜日, 11月 25th, 2015

海外からの不明アクセスが減る (11/25)

下記の方法で、廃棄リダイレクトを続けていましたが、最初は相変わらずのアクセスがありました。しかし最近はめっきり減り、通常のアクセスになってきました。効果があったものと思います。
それとは別にGoogle等は、ロボット以外でもアナリティス等もアクセスしてきますから、正常なクローラーとして扱う必要があります。今後これを加えてゆく予定です。

ブログにスパム? 海外からアクセス

it-azusaのトップに時々多量のアクセスがあります。ロボットでもなく、通常のアクセスでもないようです。アクセスログを調べていますが、米国だったり、他の国だったり、日本ではないようです。
リファラスパムという可能性もあるようです。リファラスパムというのは、このようにアクセス解析をおこなっているものが、リファラを辿って送信先のページをクリックするのを狙っているようです。最悪の場合はウィルスを拾うことにもなりかねないようです。
いずれにしろ、海外からのアクセスはロボットを除いては必要ないので、これをシャットアウトしようと思います。

前回の「IPアドレスの計算方法」で海外かどうかの判断ができるようになりました。
海外からのアクセスを制限する方法は、.htaccessファイルでおこなう方法や、Googleアナリティクスのフィルタ等がいくつか紹介されています。これらはプログラムの知識なしにできるので便利だと思います。ただ、.htaccessでおこなう方法は前回作成したipアドレスのデータベースが書かれているファイルをダウンロードするらしく、.htaccessファイルが少し重苦しい感じを受けます。処理そのものは多分高速だと思いますが。

PHPコードで記述

ここでは、自作のPHPプログラムでアクセスの制限をしようと思います。
そこで問題になるのは、WordPressのどこにPHPコードを書けばいいかということです。最初の頃はWordPressの仕組みがよく分からないので、ウィジェットにPHPコードを書けるプラグイン「PHP Code Widget」を使用していました。しかしあくまでコンテンツ用のせいなのか、肝心のheader()関数はエラーになり、受け付けてくれませんでした。
その後調べてみると、WordPressには「ショートコード」というPHPコードを呼び出す方法が用意されていることが分かりました。また同時に、テーマの編集で、page.phpやfunction.phpを直接編集するのが普通の方法ということも分かりました。逆にプラグインでPHPコードを書くのは、セキュリティホールになり易いく、避けた方がいいらしいことも。

テーマの編集

トップページなので、テーマの編集でindex.phpを編集します。
index.phpの先頭、

<?php
/**
 * @package WordPress
 * @subpackage My_Theme
 */
get_header(); 
?>

を、

<?php
/**
 * @package WordPress
 * @subpackage My_Theme
 */
include __DIR__ . /**/mycode.php' ;
get_header(); 
?>

に変更する。
mycode.phpに制限コードを記述しておきます。/**/はmycode.phpの相対ディレクトリです。自動インストールのWordPressでは、仮想ディレクトリになるので、少し面倒かもしれません。
投稿記事のページはsingle.phpを同様に編集します。

mycode.phpでは、

if ($ipkaigai){
	$nurl = "http://"  ;
	$ltxt = "Location: " . $nurl;
	header($ltxt,TRUE,301);
	exit;
}

等のコードを書きます。ここでは存在しないURLに永久リダイレクトしています。送信先がブラウザなら、DNSか何らかのエラーを出すと思います。行儀の悪いアクセスにはこのくらいの返事でいいでしょう。

WordPress – スマートフォンに対応 プラグインで

金曜日, 11月 6th, 2015

WPtouch Mobile Pluginを追加

スマートフォン用のプラグイン「WPtouch Mobile Plugin」を入れました。インストールして有効化するだけで、スマホ、iPhoneからのアクセスには、320pxくらいの幅でシンプルなデザイン表示に切り替えてくれます。
トップページにはタイトルと投稿日のアイコンが表示されます。記事ページの画像をアイコン表示するカスタマイズの方法もあるようですので、そのうちやってみようと思っています。
記事ページには、画像もスマホの幅に自動的に縮小(拡大)されて表示されます。ほぼ予想通りの表示になっています。it-azusaは記事ページにもサイドバーを表示するようにカスタマイズしてありますが、これは表示されていません。
個人的にはこれで問題ないと思いますが、もっと本格的にスマホ対応したい人は、WPtouchの有料版もあるようです。また、プラグインではなく、テーマそのものがスマホ対応になっているのもありますので、それを利用するのもいいかと思います。

プラグインを整理、削除

これでプラグインは3個になりましたが、「PHP Code Widget」と「Redirection」は停止しましたので、実質WPtouch一個です。先の2個はPHPコードを書く方法が分かったのでそれでカバーできると思います。
WordPressはプラグインとテーマの多さで大変便利ですが、使いすぎると引越しが困難になりますから、なるべくシンプルに使うのがいいと思います。

・Redirection

リダイレクト用のプラグインです。ブログを移転したり、分割した時に使用します。ページ毎に書けるので記事の分割には大変便利です。インストールも簡単です。

・PHP Code Widget

ウィジェットにPHPコードを書けるプラグインです。基本的にはウィジェットのコンテンツ用PHPのため、思い通りに動作しないことがあります。
PHPのコードを書きたい場合は、用意されているショートコードを使用するか、テーマの編集で該当ファイルを編集する方法がいいと思います。>>参考