まだまだある「.htaccess」の設定

「3-3 .htaccess(ドットエイチティアクセス)ってなに?」で紹介した、よく使う「.htaccess」の記述のうち、下記の4つについてまだ触れていませんでした。この記事では、下記の4つの書き方を確認してみたいと思います。

  1. PHPのバージョン設定
  2. Wordrpessの設定
  3. BASIC認証
  4. IP制限 などなど。

この記事は「2020年12月17日」に書かれた記事です

1.PHPのバージョン設定

ホームページを新規で制作する場合、初期設定のPHPやサーバーのコントロールパネルから選択したPHPを利用するため、あまり「.htaccess」に記述することはないかもしれません。しかし、

  • サーバーを変更するにあたり、現在使用しているサーバーと同一の状態で移転したのち、PHPなどのバージョンをアップしたい。
  • テスト環境と本番環境でPHPのバージョンを変更したい。など

設定されているPHPのバージョンとは別のバージョンのPHPを使いたいケースがでてきます。「.htaccess」でPHP の設定が必要になることもあるので確認しておきたいと思います。

ヘテムルの場合

下記の一文を「.htaccess」に記述します。

https://support.heteml.jp/hc/ja/articles/-360042620513-PHP-のご利用方法

AddHandler php5.6-script .php
AddHandler php7.0-script .php
AddHandler php7.1-script .php

上から順に、5.6を利用、7.0を利用、7.1を利用という記述です。※ほかのバージョンもあります。

CPIサーバーの場合

バージョンにより「.htaccess」を指定しておかないと最新バージョンを使えない、または動作しないこともあります。

ご利用可能な PHP のバージョン

AddHandler x-httpd-php73 .php

7.3を利用の場合

CPIサーバーで .htaccessを使用する場合、下記の記述が必要になります。

Options +SymLinksIfOwnerMatch
RewriteEngine on

2.Wordrpessの設定

wordpress を設定すると自動的に「.htaccess」に記述されるため、通常書くことはありません。稀にサーバーの管理画面でアクセス制限を付与したり解除した際に消されてしまうことがあります。ほかにもうっかり消してしまったということもあるかもしれません。そんなときは下記の記述を追加します。

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

「# BEGIN WordPress」と「# END WordPress」の間にうっかりリダイレクト処理などを書いてしまうと、wordpressの処理が行われた際に消されてしまうので、「# BEGIN WordPress」ではじまるWordpressの記述よりも前に書きましょう。

3.BASIC認証(ベーシック認証)

BASIC認証(ベーシック認証)はサーバーのコントロールパネルから設定できるので、あまり直に書くことはないかもしれませんが、制作などの際にセキュリティ上コントロールパネルを操作できない場合など、直接書くこともあるので覚えておいて損はないです。

  • BASIC認証(ベーシック認証)を設定するときは「.htaccess」ファイルと「.htpasswd」ファイルがセットとなります。
  • 稀にサーバーによってBASIC認証(ベーシック認証)をかけることができないこともあります。
  • 基本的にBASIC認証(ベーシック認証)内にBASIC認証(ベーシック認証)をかけた場合、動作しません。
    例)直下に認証をかけ、さらにその下の階層にあるmemberフォルダに認証設定を書けた場合など

「.htaccess」ファイルの作成

「.htaccess」には下記の記述を追加します。

AuthUserFile フルパス/制限をかけたいディレクトリ/.htpasswd
AuthGroupFile /dev/null
AuthName "ウィンドウに表示される文字列"
AuthType Basic
require valid-user

ほんのすこし補足しておきたいと思います。

AuthUserFile
  • 後述する「.htpasswd」ファイルの場所を指定します。
  • 「フルパス」はサーバーのコントロールパネルなどから確認することができます。
  • 制限をかけたいディレクトリがサーバー直下の場合は、不要です。
    AuthUserFile フルパス/.htpasswd となります。

※それ以外の記述は「ウィンドウに表示される文字列」以外、基本的に変更の必要はありません

稀に「フルパス」がわからないケースもあります。
その場合は「フルパス」を取得できるCGIやPHPが存在しますが、セキュリティ上あまりつかない方が良いものなので、どうしても、という場合にのみ使用することをおすすめします。※使用した後は必ずサーバー上から削除しましょう。

上記の設定が完了したら、BASIC認証(ベーシック認証)をかけたいディレクトリ(フォルダ)にアップロードします。
ホームページの制作中などであれば、直下を対象にしておけばホームページ全体に認証がかかります。テスト環境のみかけるのであれば/test/など使用しているテスト環境にファイルをアップロードします。

「.htpasswd」ファイルの作成

  • 認証を解除するためのユーザー名(ID)とパスワードを設定するファイルです。
  • 認証設定には、web上のサービスを利用するとよいかと思います。

フルパス作成サイト。時々使わせてもらっています。

例)上記のサイトで暗号化してみました。
ユーザー名:test
パスワード:testpassword で暗号化すると

test:Y4Cw/Sefxc5g2

と表示されます。パスワードの文字列は毎回変わります。

  • 発行された文字列をそのまま、テキストエディタに張り付け、
  • 「.htpasswd」という名称で保存し
  • 「.htaccess」を置いた場所に一緒にアップロードします。
パスワードを共通で利用したい場合「.htpasswd」ファイルを直下においておき、
それぞれからの呼び出しを フルパス/.htpasswd としておけば共通で利用することもできます。
あとからわかりにくくなるため、基本的にはセットで作っておいた方がわかりやすいかと思います。

7.IP制限 など

BASIC認証(ベーシック認証)の場合、都度入力が必要となり面倒なことがあります。また、管理画面にログインする人を絞りたいこともあります。そんなときは、IPによる制限をかけることがあります。

  • 基本的には固定IPである場合のみ利用します。
    ※変動IPでもある程度かけることはできますが、不特定多数の人のアクセスが許可されるため、お勧めはできません。
  • 許可してから拒否するか、拒否してから許可するかにより、記述が異なります。

許可してから拒否

たとえば、特定のIPからのアクセスを拒否したい場合に使用できます。

Order allow,deny
allow from all
deny from 000.00.00.000(IP)
  • 拒否したいIP・ドメインなどを指定します。
  • 複数指定する場合は、「deny from 000.00.00.000(IP)」を改行して追加します。1行につき1 IP

拒否してから許可

たとえば、管理画面へログインできる人を絞りたいときなどに使用できます。

Order deny,allow
deny from all
allow from 000.00.00.000(IP)
  • 許可したいIP・ドメインなどを指定します。
  • 複数指定する場合は、「allow from 000.00.00.000(IP)」を改行して追加します。1行につき1 IP

以上、ざっくりとよく使う上記以外も「.htaccess」を見てきました。ほかにもを使う場面はありますがこのコンテンツではよく使うものだけをピックアップさせていただきました。また、あ、これも使うな。と思いだしたら書きたいと思います。

松江ブログ(M2エムツー)

HOME > ホームページ制作 > 初心者のためのホームページ制作 > まだまだある「.htaccess」の設定

ページトップへ