こんにちは、WPホームページ研究所の運営サポートチーム(@WP_LABO)です。
本日は業務メモです。ワードプレスでは特定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です。一時的な変更なら302を選んでくださいませ。
まとめ
本日はURLに含まれる文字列から判断して「リダイレクト処理」をかけるという方法をご紹介させていただきました。考え方としては「301リダイレクトが妥当であれば使ってもOK」です。ただ、どういった理由で文字列を判断したいのかによっては別の方法が良い場合もあります。他にも色々な自動転送をお試しくださいませ。
最新式の無料プラグインを事前公開
WordPressは公式サイトに登録済みのプラグインだけで全機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグインを無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
→ 改良されたプラグインを確認する