TOPサイト作成SEOWordPressで301リダイレクトを.htaccessで行う方法とはWordPressで301リダイレクトを.htaccessで行う方法とはパーマリンクにカテゴリーを含めるか?含めないか?で悩み。最初は無しで運営していたのですが、やっぱりカテゴリーの構造化をするためには含めておいたほうが良いかな。いう考えに至り301リダイレクト処理した時の方法を残しておきます。WordPressでは方法が2通り有り、プラグインか.htaccessで行う方法があります。個人的には.htaccessの方がどういう処理を行っているのか仕組みを理解出来ますし、サーバーを今後移転しても.htaccessが対応しているサーバーならコピペで済む。プラグインを少なくして代用可能ならそちらで対応した方がWordPressの動作が軽くなるという考えから、今回は.htaccessの方法を取りました。個別にリダイレクトをする方法だけ紹介すれば良いかな?と執筆当初は思ったのですが、よく使われるであろうリダイレクトの記述を探している人も居るかと思い併せて数点紹介しておきます。設定を行う前に...。設定を行う前に...。あなたはリダイレクトの仕組みをよく理解していますでしょうか?リダイレクトの使い所や、絶対にしてはいけないタブー行為など。知らずにSEO評価を下げてしまう前に、一度は読んで欲しい基礎知識を別記事にまとめました。.htaccessの編集を行う前に見ておくと、安心して以降のリダイレクト設定作業を行えると思いますので、一読しておくことをおすすめ致します。Tuesday301リダイレクトと302リダイレクトを使う時の基礎知識から、知っておいたほうが良い...301リダイレクトとは301リダイレクトの記述方法を解説する前に簡単な301リダイレクトの解説をしておきます。リダイレクトを解説する記事を見ると、大体301と302リダイレクトについて触れらている事が多いのですが、違いは以下の意味が含まれています。Redirect恒久的なリダイレクトこのリダイレクトは将来変更することは絶対にないとサーバーに伝える方法。SEO的には記事評価を全てリダイレクト先に譲渡して下さいと伝える方法。検索エンジンからのアクセス流動や順位を引き継ぎたい場合には必ず301リダイレクトを使いましょう。Redirect名前のTemporaryから分かる通り一時的なリダイレクトもしかしたら将来は変更するかもしれない時に使用するリダイレクト。SEO的にはリダイレクト先には評価を譲渡しない。キャッシュしない方法。検索エンジンからのアクセスや評価は元記事に残ります。リダイレクト先が変更される可能性が将来的に残っているためオリジナルの方を重視します。使い所は臨時的なメンテナンスページに飛ばしたり、同一コンテンツだけどアクセスした人を専用言語のページに飛ばす時やデバイス毎に振り分ける時などに使用します。/pc.html結局どっちを使ったほうが良いの?と悩むかもしれませんが、デバイス毎にページを振り分けない限りは301で良いでしょう。今回私の場合はページのスラッグやパーマリンクを変更してしまい、以前のURLでは記事にアクセスできないため新しいURLに評価などを全て引き継いで欲しいということで301リダイレクトを使いました。.htaccessはどこにある?WordPressをインストールしたトップディレクトリに存在しています。FTPツールなどでアクセスし、.htaccessファイルをローカルにダウンロードして下さい。ダウンロードしたファイルを開くと、一度も触ったことがない場合は下記のような記載がされていると思います。WordPress記載されている内容は絶対に触らないで下さい。上記の記述を簡単に説明すると存在するファイルやディレクトリは静的にそのまま表示する。存在しないURLにアクセスした場合にはアプリ(WordPress)で処理する。意味が分からず、適当に弄ってしまうとエラーを起こしサイトが白くなり見えなくなったりしますので注意して下さい。不安な方は必ず作業をする前にバックアップを取っておきましょう。WordPressの前に書いて下さい。後ろに書くとエラーで正常に処理がされません。WordPressの上に記載しましょう。基本は以下の記述になります。[R=301,L]になります。[R=301,L]となります。それでは一行ごと見ていきましょう。後に続く文字が全てコメントとして処理されます。これは何の処理をしているのか?後で見直しても分かるようにメモを残しておきましょう。mod_rewrite.c>2,5行目はサーバーでmod_rewriteの機能が有効であれば<IfModule>~</IfModule>の間に囲まれている記述の処理を実行して下さい。WordPressが使えている時点でこの機能に対応していると思うので、そのままコピペして下さい。On3行目はリダイレクトの機能を有効にする宣言です。~4行目にリダイレクトの処理を記載します。記述のスペース部分は半角の空白です。[301の宣言]^old-page.html$^は正規表現の「先頭一致」の意味でWordPressを設置したドメイン部分になります。正確には.htaccessが設置されている場所から見たURLです。私のサイトであればhttps://php-labs.com/が^に置き換えられます。$はこのURLの終わりを宣言しています。^old-page.html$はhttps://php-labs.com/old-page.htmlを指します。new-page.htmlここには転送先のURLを記入するのですが、同ドメインであればドメイン部分を省略して構いません。ドメインが変わるのであればhttps://から記入して下さい。Redirectで処理してくださいという宣言。Rや301を省略した場合は302リダイレクトされます。LはLastの略称でこの行でLが現れるまでの処理が無事に実行されたら、この行での処理は終了。[L]以降になにかしら処理が書かれていたとしても、この行では処理は行わない。終わりという宣言です。https://www.new-domain.com/new-page.php</IfModule>実際に私のサイトでリダイレクトを行った際の記述を一部紹介。パーマリンクにカテゴリー名を含めたいと考え、転送前はドメイン直下にスラッグが来てますが、転送先は全てカテゴリー名が含まれているのが分かると思います。<IfModule>~</IfModule>の間には複数行リダイレクト処理を書けますので、個別に複数リダイレクトをしたい場合には改行しながら記載して下さい。[R=301,L]</IfModule>WordPressでは記事のスラッグ(URL)が変わらずに、カテゴリーのスラッグを変更した時に使うと良いでしょう。8行目のカテゴリー名変更例では以下の様な処理が行われます。変更前https://exmple.com/create-site/seo/exmple.html変更後https://exmple.com/site-affile/seo/exmple.htmlカテゴリーのスラッグを「create-site」から「site-affile」に変えた例ですね。[R=301,L]</IfModule>^(.*)$は改行以外の文字が0回以上続いた時TRUEを返します。上記の記述は問答無用にアクセスしたら新しいURLに強制的に転送するという認識で問題ありません。記事やカテゴリーなどのスラッグが全て同じでドメインだけ変わった場合には、個別に一個一個転送処理を書かず上記の一行を書くだけで全てのURLが新しいドメインに301リダイレクトされます。[R=301,L]</IfModule>wwwが無いURLにアクセスした場合に「https://www.~」にリダイレクトする方法です。今後変更する可能性が少ないため永続的なリダイレクトの301を使います。注意RewriteCondの後ろに書くドメイン部分は正規表現を使用するため「.」は「\.」と記述しないとエラーになるので注意して下さい。[R=301,L]</IfModule>今後もずっと常時SSLなため301リダイレクトを使用します。上記の方法でWordPressをhttpからhttpsに変更するよりも、あなたが契約しているサーバーに用意されている方法で変更したほうが良いでしょう。最適化されているでしょうし変更後のエラーも起こらないでしょうから。上記の方法はhtmlサイトなどWordPress以外でSSLにしたい時に使うと良いでしょう。リダイレクト処理が正常に行えているかの確認方法リダイレクト設定を行った場合には必ず一度は設定が正常に行われているかの目視確認を行いましょう。ある間違いに301リダイレクトを設定したはずなのに302リダイレクトになっていた。リダイレクト先に正常に飛ばない。指定先が間違っていた。