ワードプレスで特定URL(ディレクトリ名)のアクセスをトップページへリダイレクトさせる方法

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

本日は業務メモです。ワードプレスでは特定URLへのアクセスを拒否したい場面があります。たとえば運営中のサイトのURLが「example.com」だったとして「example.com/category/information」にアクセスがあったときにページを開きたくないといった状況。意外と少ないかもしれませんが、該当ページが開くことによって「検索エンジン(グーグル)側にURLとして認識されるのを避けたい」なども考えられます。

ワードプレスで特定URL(ディレクトリ名)のアクセスをトップページへリダイレクトさせる方法

調べてもなかなか出てこなかったので次回用の対応メモとして残しておきます。ワードプレスでサイトを運営していると特定のディレクトリ名が含まれるURLへのアクセスを無効化したくなることがあります。

htaccessを使った一般的なリダイレクト方法

一般的には下記の手法で「htaccess」を使ってリダイレクトさせます。301リダイレクトです。

Redirect permanent /directory-name http://example.com

上記の書き方では「example.com/directory-name」へのアクセスを「example.com」に強制転送します。この方法でも良いのですがサーバーによっては「htaccess」が使えない環境も考えられますよね。

そんなときは「functions.php」からphpで制御をかける方法が便利です。phpであれば「htaccess」の使用許可は関係なく自由に指定可能です。さらに言えば「htaccess」ではドメインの表記が必要でしたがphpであればドメインの表記をせずに実装もできます。ワードプレスには便利な関数が色々と揃っていますね。

URLに「abcde」という文字列が含まれる条件付きのリダイレクト方法

以下がURLに含まれる文字列から判断してリダイレクトを行う命令文です。

add_action( 'get_header', 'specified_url_redirect' );
function specified_url_redirect(){
	//現在ページ取得
	$url = $_SERVER['REQUEST_URI'];

	//URLに「abcde」という文字列が含まれていたらリダイレクト
	if(strstr($url,'abcde')){
		wp_redirect( get_site_url(), 301 );
		exit;
	}
}

カンタンに解説すると「現在ページ取得」で今開かれているページのURLを取得して、URLに「abcde」が含まれているかどうかをif文でチェックしています。もし「現在開いているURL」に「abcde」があればトップページにリダイレクトされるという処理です。ちなみに301という部分を302に書き換えると302扱いに変更できます。

get_site_url()ではトップページのURLを取得しているので「URLの文字列にabcdeが含まれていれば」トップページに301リダイレクトをかけるという処理となります。ちなみに「301」であれば永久転送扱い、そして「302」にしたら一時転送扱いなので状況に応じて書き換えればOKです。

まとめ

本日はURLに含まれる文字列から判断して「リダイレクト処理」をかけるという方法をご紹介させていただきました。考え方としては「301リダイレクト」が妥当であれば使ってもOKです。ただ、どういった理由で文字列を判断したいのかによっては別の方法が良い場合もあります。他にも色々な自動転送をお試しくださいませ。

最新式の無料プラグインを事前公開

WordPressは公式サイトに登録されているプラグインだけでは機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグイン無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
改良されたプラグインを確認する