スポンサードサーチ
WordPressの管理画面に特定のIPアドレスだけログインできるようにする、というのはセキュリティ向上のためによく行われます。
ところが今回、クライアントからWebサイト自体はクローズドするので301リダイレクトしたいけど、WordPressの管理画面はコンテンツ移行の関係でログインをしたい、といった要望がありました。
ただ単にリダイレクトを行うだけならいくつか方法がありますが、特定URLのみアクセスを許可してそれ以外のアクセスはリダイレクト、という情報がパッと出てこなかったのでメモ。
目次
リダイレクトとは
リダイレクトとは、Webサイトの移設やドメインの変更、ページのURLを変更する場合に変更前のURLから変更後のURLへ、ユーザーや検索エンジンを誘導(転送)するための仕組みになります。
特に301リダイレクトは、コンテンツのアドレス変更として動作するもので、正しく設定した301リダイレクトでは元のリンク評価のうち85〜90%が引き継がれるとGoogleのMatt Cutts(マット・カッツ)氏は言っています。
海外SEO情報ブログ:301リダイレクトで何%のPageRankが失われるのか? => リンクを通したときと同じ
301リダイレクトによって消えるPageRankはリンクを通じて消えるPageRankと現在はほぼ同じだ。
このため、ドメインの移行やWebサイトの統合などには、この301リダイレクトが使われます。
リダイレクトの設定方法
リダイレクトの設定にあたってはいくつか方法がありますが、今回はmod_rewriteを使った.htaccessによる設定に絞ってお話をします。
mod_rewriteとはApacheのモジュールのひとつで、このモジュールを使用する事によってアクセスしてきたURLを書き換える事が出来ます。
Webサイト全体を.htaccessで301リダイレクトさせる場合
Webサイト内の全てのページを、変更したWebサイトの各同一URLへリダイレクトさせる場合は以下のように記述します。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.moto\.jp RewriteRule ^(.*)$ http://www.henko.jp/$1 [R=301,L] </IfModule>
これは、http://www.moto.jpからhttp://www.henko.jpに301リダイレクトを行っていますが、詳細に見てみましょう。
<IfModule mod_rewrite.c> </IfModule>
mod_rewriteが利用できない環境ではエラーが発生してしまうので、まずはmod_rewriteが利用できるかどうかを確認し、もし利用できない場合には、<IfModule mod_rewrite.c>から</IfModule>間が一切適用されなくなります。
RewriteEngine On
これは、mod_rewriteの機能をONにするという記述になります。
RewriteCond %{HTTP_HOST} ^www\.moto\.jp
これは、RewriteRuleを実行するための記述で、「RewriteCond %変数名 条件」の順番となっています。
ここに記述した条件が満たされた時だけ、RewriteRuleに書いたURLの書き換えと転送が実行されるようになります。
上記の場合だと、「HTTP_HOST」という変数名が使われていますので、閲覧しているWebサイトのドメインが「www.moto.jp」の時が条件となります。
RewriteRule ^(.*)$ http://www.henko.jp/$1 [R=301,L]
これは、RewriteCondeでの条件が満たされた時に、URLの書き換えと転送を行う部分です。
RewriteRuleの後にある「^」は行の先頭を表し、「()」で囲まれた部分は後ろにある「$1」の部分に代入され、「.*」はあらゆる文字、「$」は行の末尾を表します。
つまり、「http://www.moto.jp/sample/」というURLにリクエストがあった場合、「^(.*)$」はこの「/sample/」という部分を示し、これは「$1」となります。
後半の「http://www.henko.jp/」は変更後のドメイン、「$1」上記の場合は「/sample/」になります。
その後ろにある「[R=301,L]」の「R=301」は、301リダイレクトを示し、「L」はRewriteによる書き換えと転送をこれで打ち切りにする、という事を示しています。
これにより、「http://www.moto.jp/sample/」というURLにアクセスがあったものが「http://www.henko.jp/sample/」にリダイレクトされます。
WordPressの管理画面以外を.htaccessで301リダイレクトさせる場合
WordPressの管理画面以外を.htaccessで301リダイレクトさせる場合は以下のようになります。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(www\.)?moto\.jp/wp-admin/*.*$ RewriteCond %{REQUEST_URI} !^/wp-login\.php*.*$ RewriteCond %{REQUEST_URI} !^/wp-admin/*.*$ RewriteRule ^(.*) http://www.henko.jp/$1 </IfModule>
これは、「HTTP_REFERER」で前ページが「http://www.moto.jp/wp-admin/」のディレクトリ以下でない場合のアクセスと、「REQUEST_URI」で「wp-login.php」「/wp-admin/」以外のアクセスは、http://www.henko.jp/にリダイレクトをさせています。
これにより、管理画面にだけはログインできるようになり、プレビューなどは使えませんが、投稿や固定ページ等、/wp-admin/以下のディレクトリに入っているものは閲覧ができます。
ITのことで、お困りではありませんか?
ITは、コンサルティングからプロジェクトを全体を見据えて実施しなければ上手くいきません。
リソース・シェアリングは、ITのコンシェルジュとして、クライアントにとっての最適解をご提案するコンサルティングから構築・運用・解析までをワンストップで対応できるITコンサルティング会社です。
ITに関してお困りのことがあればお気軽にご相談ください。
ITプロジェクトで最適解を探すなら
御社にとって最適なWebサイト構築をするなら
失敗しないWebシステム開発をするなら
WordPressを活用したいなら
ECサイトを構築したいなら
越境ECサイトを構築したいなら
企業間取引向けECサイトを構築したいなら
マーケットプレス型ECサイトを構築したいなら
課題や事例から最適解を探すなら
リソース・シェアリングの実績
お問合せ
スポンサードサーチ
次も気に入っていただけるかもしれません
株式会社リソース・シェアリング
〒104-0061
東京都中央区銀座7丁目13番6号
サガミビル2階