WordPress
カスタマイズ事例

WORDPRESS CUSTOMIZATION

WordPressの基本パーマリンク「domain.com/?p=123」で該当ページにリダイレクトしないようにする

WordPressの基本パーマリンクはご存知の通り、
https://domain.com/?p=123
です。ドメインの後ろに ?p=投稿ID とつける形。あんまりカッコ良くはないですね。
カッコ良くはないので、この基本パーマリンクのままサイトを運用するサイト運営者はほぼ皆無で、たいていは別の設定を選択して運用されていることと思います。
ちなみに当100ウェブは、カスタム構造「/%category%/%post_id%/」で運用していますし、クライアントにもそう設定することをお奨めしています。

さて、ここからが本題となりますが、WordPressでは、パーマリンク構造を基本以外のものに設定したとしても、基本パーマリンクのURLにアクセスすればしっかり設定したパーマリンク構造にリダイレクトしてくれます。

https://domain.com/?p=123 → https://domain.com/postname
みたいな感じに。
 
これが困るという場合があります。
個別のページのURLは聞かれたら答えるぐらい、検索エンジンにはインデックスされないほうが良いのでno-indexに設定している、といった具合に、公開はしているけどゆるーいユーザー限定サイトとかそういうサイトを運用している場合です。

そうです、わたしも最近よく使います 調整さん がまさにこれです!
調整さんは個別ページを誰でもアクセスできるように公開してますが、URLが乱数になっているので当てずっぽうに文字入れてもページにたどり着くことができないような仕組みですよね。
その調整さんをたとえばWordPressでつくったら、https://domain.com/?p=123 の調子でURLに1から順に数字入れられて、誰かの作ったページにリダイレクトされちゃったら、サービスとして成り立ちません。
 
なので、pパラメータ付きのURLにアクセスがあったら強制的にトップにリダイレクトさせてしまいましょう。

テーマのfunctions.phpに以下を追記します。

function disable_p_parameter_redirect() {
  if (isset($_GET['p'])) {
    remove_action('template_redirect', 'redirect_canonical');
    wp_safe_redirect('/');
  }
}

add_action('wp', 'disable_p_parameter_redirect');

くれぐれも通常のサイトでは使わないようにしましょう。
なにしろWordPressの基本機能を強制的に止めることをしていますので、いろんな他の機能に影響を及ぼしかねないです。
 
ほんと「調整さん」みたいなゆるいユーザー限定サイトを運用しようとしている事業者さん限定の事例紹介でした。

【100ウェブ新着情報メルマガ】

WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!