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

スポンサードサーチ

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/以下のディレクトリに入っているものは閲覧ができます。

AI時代だからこそ、戦略は人と一緒に考えることが、最初の一歩です。

開発やコンテンツ生成はAIが担える時代になりました。しかし、何を作るか・どこを目指すかという問いに答えるのは、依然として人の仕事です。

DX推進や新規事業の立ち上げで壁にぶつかる企業の多くは、ソリューションの導入や社内人材への丸投げに終始し、課題の本質が言語化されないまま進んでしまっています。

経営とITの両方を理解した人間が、経営者と並走しながら要求定義・要件定義の段階から一緒に考える。AIはこのプロセスを補助できますが、主役にはなれません。

まだ課題が言語化できていない段階からでも、遠慮なくご相談ください。一緒に考えます。

AIが生成できないのは「実績と信頼」

ECサイトやマーケットプレイスサイトはCS-Cart国際版(公式)という選択肢

AIはコードを書けます。しかし、長年の実運用で磨かれたロジックや、世界中の事業者が検証したセキュリティを、プロンプト一つで再現することはできません。

CS-Cart国際版(公式)は、自社EC・越境EC・BtoB EC・マーケットプレイスに対応した豊富な実績ある機能をパッケージとして提供しています。

構築コストを抑えながら、堅牢なECサイトを立ち上げることができます。

スポンサードサーチ