The post プラグインなしでWordPressページをリダイレクトする方法【PHPコード例】 first appeared on Fukuro Press.
]]>WordPressで次のような処理が必要でした
本当はプラグインを入れるのが確実だけど、どうしてもプラグインなしでリダイレクト(Redirect)したい場面があります。(PHPコードでどうにかしたい)
そんなマニアックな悩みへの解決策です。
ただし自己責任で行ってください。
例えばこんなケースを考えてみましょう。
↓ リダイレクトさせたいWP投稿ページURL
https://example.com/hoge/post-1234
↓ これを次のURLにリダイレクトさせたい
https://example.com/hoge/jikosyoukai
後から投稿URLを変えたいパターンです。
WordPress投稿画面では記事作成すると post-1234 みたいなスラッグが自動生成され、それに気づかないで記事投稿することがあります。そんな時に個別URLだけリダイレクトさせたいみたいな…
※ より正確に書くなら 自動生成されたスラッグで公開 ⇒ Googleにインデックスされる ⇒ 検索流入でアクセスがある ← こういうスラッグを手動変更できない状況を想定
そんな時は次の手順でリダイレクト可能です。
ここではPHPコードで何とかします。
だから初めにテーマのfunctions.phpを開きましょう。
↓ 外観 -> テーマファイルエディター を開く
↓ 右のファイル一覧から function.php オープン
ただし親テーマを直接編集するのは良くありません。
念のために子テーマを作っておいてください。
▼ プラグインによるWP子テーマの作り方
なくてもいいけど親テーマを更新したら親テーマへの変更はすべて消えちゃいます。それを防ぐために子テーマという仕組みがあるんですね。
とりあえずfunctions.phpを開ければヨシ
ここでは次のリダイレクトをします。
その場合はfunctions.phpにこんなコードを追加します。
↓ 個別にリダイレクトさせるコード例
function redirect_page() {
if (isset($_SERVER['HTTPS']) &&
($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'
) {
$protocol = 'https://';
}else {
$protocol = 'http://';
}
$currenturl = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$request_uri = $_SERVER['REQUEST_URI'];
switch ($request_uri) {
case '/hoge/post-1234':
$urlto = home_url('/hoge/jikosyoukai');
break;
default:
return;
}
if ($currenturl != $urlto)
exit( wp_redirect( $urlto ) );
}
add_action( 'template_redirect', 'redirect_page' );
何してるかは大まかに分かりますよね?
分からないなら手を出さないでください。
ここからはさらに応用的な話です。
もっと汎用的なリダイレクト処理をしてみます。
例えば次のリダイレクトルールを考えます。
初めはスラッグ規則を「投稿日時+投稿名」にしていたけど、あとからパーマリンク設定を変えて「投稿名」だけにしたケースです。
その場合、汎用的なリダイレクトで対処可能です。
↓ より汎用的なリダイレクトPHPコード例
function redirect_page() {
if (isset($_SERVER['HTTPS']) &&
($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'
) {
$protocol = 'https://';
} else {
$protocol = 'http://';
}
$currenturl = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$request_uri = $_SERVER['REQUEST_URI']; //wp_make_link_relative($currenturl);
$redirect_pattern_1 = '/[0-9]{2}\\/[0-9]{2}\\/[0-9]{2}/i';
if(preg_match($redirect_pattern_1, $request_uri) !== 0){
$urlto = home_url(preg_replace($redirect_pattern_1, '', $request_uri));
}else{
return;
}
if ($currenturl != $urlto)
exit( wp_redirect( $urlto ) );
}
add_action( 'template_redirect', 'redirect_page' );
かなり分かりにくいですね…
本当に原始的にリダイレクトルールを定義してます。
身もふたもないけど次の結論に至りました。
《《 普通にプラグイン使う方が楽 》》
だって自分でPHPコードを書いてしまうと、
ここまでリスクを取る価値はあるのか…
リダイレクト規則が1つか2つなら問題ないかも
でも複数のリダイレクトルールが必要なら、
大人しくプラグインを使うのが賢いと思います。
▼ この記事のRedirectionプラグインが優秀!
プラグインを使うのが確実ですね。
The post プラグインなしでWordPressページをリダイレクトする方法【PHPコード例】 first appeared on Fukuro Press.
]]>The post WordPress内だけでリダイレクトを設定&管理! Redirection の使い方 first appeared on Fukuro Press.
]]>リダイレクトは技術素人には難しすぎます。
サーバー技術に明るい人があるなら問題ないですが、知識なしの状態からとすると色々覚えなくてはならないし面倒です。
また下手な設定がブログ構成を壊してしまう原因にも・・・
そこで便利なのが Redirection というプラグイン
これを使うことでリダイレクト設定から管理まで全てWordPress内で行うことができます。サーバー側のファイルを編集するとか面倒な作業は一切ありません。
ここではこのRedirectionプラグインの使い方・実用例をまとめました。
まず初めにリダイレクトについて簡単に説明します。
これは一言でいうと「あるページから別のページに自動的に移動させる」という技術的なテクニックのこと
使用例としては次のような用途に使われることが多いです。
元のURLを残したまま新しいURLに移動させたり、SEO的な評価を下げないためにページを統一させるなど色々な場面で使うテクニックだと思います。
関連記事 : wwwのありなしをWordPressで統一する方法【URL正規化】
このリダイレクト処理には .htaccess というサーバー側での設定を自由に変更できる設定ファイルが必要になります。そこに必要な記述を追加するだけですが、結構面倒です。
なぜなら次のような手間やリスクがあるため
そもそも構文を覚える時点で大分手間がかかります。また検索などして使用例を見つけたとしてもサイトごとに書き換えが必要だったりするので初心者向けではありません。
また .htaccess は本当に重要なファイルなので下手に編集するとサイト構成を壊す原因にもなってしまいます。
そういう手間を減らして安全にリダイレクト設定をしたい・・・
という場合に便利なのが Redirection プラグイン
ではその導入や使い方を次から説明していきます。
まずWordPressにこのプラグインをインストール・導入しましょう。
その導入手順は次の通り
まずメニューから「プラグイン」ー>「新規追加」をオープン
すると新規追加画面が開くのでプラグインの検索欄に「redirection」と入力
しばらくすると検索結果一番上に次のプラグインが表示されるので「今すぐインストール」ボタンを押してインストールしてください。
ちなみに手動インストールする場合は次ページからzipがダウンロード可能
https://ja.wordpress.org/plugins/redirection/
インストールが終わったら「今すぐインストール」ボタンが「有効化」ボタンに変わるので、最後にそれも押すのも忘れずに。
これでリダイレクト設定を行えるようになります。
リダイレクト設定追加には ルール(規則) を作成します。
その基本的な追加手順を説明すると次の通り
まずメニューから「ツール」ー>「Redirection」をオープン
すると次のような画面が開くので、画面上部の「新規追加」ボタンをクリック
そうすると次のようなルール作成フォームが表示されると思います。
このフォームの「ソースURL」にリダイレクト元のURL(古いURL)、「ターゲットURL」にリダイレクトさせたいURLを入力してルールを作成するだけです。
これだけだと分かりにくいので例を使って説明します。
例えば次のような条件でリダイレクトさせたいとしましょう。
リダイレクト元のページ : https://example.com/old-page/ リダイレクト先のページ : https://example.com/new-page/
単純に example.com 内で「old-page」から「new-page」に転送させたいだけです。
この例の場合、次のようにソースURLとターゲットURLを入力して「転送ルールを作成」ボタンをクリックするとルールが追加されます。
ただ単に個別のページから別ページにリダイレクトさせるだけなら、他の入力・選択項目は一切構う必要はありません。
ちなみに追加したルールは一覧からも確認することができます。
また当然一度作成したルールは後からでも再編集可能です。
次画像のようにURL欄内のメニューから編集・削除・無効化・Check Redirect(リダイレクトが正しいかの確認)の4つの操作が選べます。
以上が Redirection を使った基本的な転送ルールの作成方法
一切 .htaccess を編集することなくWordPress内で全て完結できるのが便利ですね。
Redirectionでは「正規表現」を使うことで簡単な記述で複雑&実用的なリダイレクト設定を行うこともできます。
例えばあるパターンに当てはまるページを全て特定ページに転送させたり、旧サイトを新サイトに移行させたりなど・・
そういった高度な処理をするには正規表現を使うのが一番簡単です。
この正規表現を使うにはルール作成フォームで「正規表現」にチェックを入れるだけ
そしてソースURLにパターンを入力することで当てはまる全ページをターゲットURLに転送させることができます。
この機能を使った実用的な例をいくつか紹介すると次の通り
例えば次のケースのようにドメインを変えたなどでサイト移転したいとしましょう。
旧サイトURL : https://example.com/ 新サイトURL : https://example.net/
このとき旧ドメイン( example.com )が残ったままだと検索エンジンからのページ評価が新旧で分散してしまうのであまりよくありません。
新サイトに正しい評価を集めるためには旧サイトからリダイレクトするのがベストです。
そのために新サイトから旧サイトへのリダイレクトを行うルールは次の通り
ソースURL : /(.*)
ターゲットURL : https://example.net/$1/
ただしターゲットURLの example.net は各自の新しいドメイン名に置き換えしてください。
また何度も言うように「正規表現」にチェックを入れるのも忘れずに
日付つきパーマリンクとは次の例のように「/2018/11/26」みたいな日付が付いたパーマリンク形式のこと
https://example.com/2018/11/26/example-page/
このパーマリンクを何らかの事情で次の日付なしの形式に変更したとしましょう。
https://example.com/example-page/
この場合、元の日付ありパーマリンクには404エラーでアクセスできなくなります。
そのためもし日付ありのほうで被リンクなどをもらっていた場合、リンク切れになってしまいSEO的な評価が下がることがあります。
それを回避するために日付ありから日付なしにリダイレクトするルールは次の通り
ソースURL : ^/\d{4}/\d{2}/\d{2}/(.*)
ターゲットURL : /$1/
これについてはソースもターゲットも両方そのままコピペでOKです。
ルールを追加すれば日付ありURLにアクセスがあった時、自動的に日付なしURLのほうに転送されます。
実はWordPressユーザー名というのは対策していないと外部から丸見えです。
例えば次のようなURLにアクセスすればユーザー名は簡単に分かってしまいます。
https://example.com?author=1
そしてこのようなURLにアクセスし、再度ブラウザのURL欄を見れば次のようにユーザー名が丸見えで表示されるはず(対策をしていない場合)
https://example.com/author/ユーザー名/
ログインに必要な情報が1つばれてしまうのはセキュリティ的には良くないですよね。
そこでユーザー名を隠すためのルールは次の通り
ソースURL : /author/(.*)/
ターゲットURL : /
これもドメイン名などに合わせて書き換える必要はありません。全部コピペでOKです。
ルールを作成すれば「?author=1」にアクセスされたとき、自動的にトップページに転送されるようになったはずです。
ちなみにこれと同じことはプラグインを使ってもできます。
関連記事 : WordPressのユーザー名は実は丸見え・・確実に外部から隠す方法
詳しくは上記事でも紹介したので興味のある方はそちらもご覧ください。
ここまでで Redirection を使ったリダイレクトのやり方や応用例を解説してきました。
この他にもリンク作成・管理するなら次のプラグインも役に立つはずです
詳しい導入手順や使い方、注意点については各記事をご覧ください。
どのプラグインも便利ですが、特にリンクをボタン化できる Max Buttons は使い方によってはかなり重宝すると思います。
ブログ運営していてリダイレクト処理がどうしても必要だけど
「リダイレクト処理のやり方が分からない」
「下手に設定してサイト構成を壊すのが怖い」
「いちいち .htaccess を編集するのが面倒」
などの場合はこのプラグインを使うのがおススメです。
以上リダイレクトの設定・管理ができる Redirection プラグインについてでした。
The post WordPress内だけでリダイレクトを設定&管理! Redirection の使い方 first appeared on Fukuro Press.
]]>