mod_rewriteでWordPressの管理画面だけアクセスを許可する設定

【PR】当Webサイトのコンテンツにはプロモーション(広告)が含まれています

スポンサードサーチ

WordPressの管理画面に特定のIPアドレスだけログインできるようにする、というのはセキュリティ向上のためによく行われます。

mod_rewrite

ところが今回、クライアントから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/以下のディレクトリに入っているものは閲覧ができます。

ECサイト&マーケットプレイスサイトを低コスト・短納期で構築するなら

多言語・多通貨対応ECサイト&マーケットプレイスサイト構築パッケージ CS-Cart は、B2C、B2B、B2B2C、B2B2Bのどのビジネスモデルにも対応したECサイト&マーケットプレイスサイトを低コスト・短納期で構築が可能です。

ECサイトやマーケットプレイスサイトの構築を検討している場合には、是非ご検討ください。

経営課題の解決でお困りではありませんか?

DXを始めとするITを使った経営課題の解決が上手くいっていない企業は数多くあります。

それは、単なるソリューションの導入や、社内人材への丸投げとなっており、課題解決がゴールになっていないからです。

そのためには、経営とITを理解した人材が、経営者層と共に取り組み、経営者の頭の中を可視化することが必須要件です。

現在、1時間の無料オンライン・コンサルティングを実施しております。

是非この機会にご相談ください。

経営課題を解決するWebサイト構築の最適解は?

経営課題を解決するWebサイトとは、何をおいてもWebサイトに集客する事が必須要件です。

そうなると、最強のWebサイトとは「検索エンジンへの登録と分析、GA4での現状分析ができ、集客のための実施施策に落とし込みができ、コンバージョンに繋げられ、改善の分析ができるWebサイト」一択です。

まずは、現状のWebサイトが経営課題を解決することができるのかをまずご相談ください。

ECサイトの最適解はクライアント毎に異なります

経営課題を解決する最適なECサイト、越境ECサイト、BtoB ECサイト、マーケットプレイスを構築するためのシステムは、クライアント毎に異なります。

まずは、御社にとって経営課題を解決するには、どういったシステムが必要であり、ASP、SaaS、パッケージ、フルスクラッチのどれが最適なのかの検証が必要です。

スポンサードサーチ