.htaccess

個人法人共用マネージドVPS専用代理店

アクセス制限などが実現できる .htaccess ファイルについてご案内いたします。

.htaccessファイルについて

.htaccessファイルを利用すると、「ユーザー名とパスワードによるアクセス制限(ベーシック認証)」、「MIMEタイプの新規追加」、「ファイル名一覧表示のON/OFF」、「PHPの動作設定変更」など、ウェブサーバーの動作をカスタマイズすることが出来ます。

以下に.htaccess の設定方法をご案内しておりますのでご参考下さい。

.htaccess設置の流れ

htaccess.txtというファイル名でファイルを作成し、ご希望の設定を記載します(設定例は以降の項目を参照)。

作成したhtaccess.txtを、設定を適用させたいディレクトリにFTPでアップロードします。

アップロード後、 FTP上で htaccess.txtの名前を .htaccessに変更します。

ブラウザーを起動し、設定内容通りの動作が行なわれているか確認します。

ユーザー名とパスワードによるアクセス制限(ベーシック認証)の設置方法

ユーザー名とパスワードによるアクセス制限については、ファイルマネージャーをご利用頂くことで、ブラウザー上から簡単に設置することができます。通常はファイルマネージャーをご利用ください。下記は、上級者向けにsshまたはFTPを利用して手動で設置する方法です。

.htaccess設置の流れを参考に下記内容が記載された.htaccessを作成し、ユーザー名とパスワードによるアクセス制限をかけたいディレクトリにFTPでアップロードします。

  AuthUserFile /ホームディレクトリ名/.htpasswd
  AuthGroupFile /dev/null
  AuthName "Login"
  AuthType Basic
  
  require valid-user
  

実際のホームディレクトリ名に関しましては、弊社よりメールにてお送りしている「レンタルサーバー登録通知書」で確認出来ます。例えば、AuthUserFile /home/user/user00001/.htpasswd と記入します。

アップロード後、 FTP上で htaccess.txt の名前を .htaccessに変更します。

パスワードファイルをFTPで作成する方法

htpasswd.txtというファイル名でテキスト文章を作成し、所定のハッシュ方式(MD5方式)でエンコードしたパスワードを記入してください。エンコードには下の変換フォームをご利用ください。

パスワード変換フォーム

設定をするユーザー名とパスワードを入力し、「パスワード変換」を押してください。

ユーザー名:
半角英数字、アンダーバー(_)、ドット(.)、ハイフン(-) 利用可能です。(1文字以上32文字以内)

パスワード:
半角英数字のみ利用可能です。(4文字以上32文字以内)

変換結果は右に表示されます:[                ]

パスワードファイルをsshで作成する方法

sshでsshサーバーにログインします。 → SSHのログイン方法

以下のパスワード発行コマンドを実行します。

$ /usr/local/etc/httpd/bin/htpasswd -c .htpasswd ご希望のログイン名
[ご希望のパスワードを2回入力する]

以上で設定が完了です。ブラウザーを起動し、設置したフォルダーにアクセスして、IDとパスワードの入力画面が表示されるか確認します。ログイン名とパスワードは、パスワード発行コマンド上で入力したものになります。

さらに、別のログイン名を追加発行する場合は、下記のコマンドを実行します。( -c を省きます。)

$ /usr/local/etc/httpd/bin/htpasswd .htpasswd ご希望のログイン名
[ご希望のパスワードを2回入力する]
特定のホスト名・IPアドレスからの接続制限について

.htaccess設置の流れを参考に、下記内容の.htaccessを作成し、ホスト名・IPアドレスの部分を編集し、設定を適用するディレクトリにアップロードしてください。なお、ご利用頂いているサーバーのOSによって記載方法が異なりますのでご注意ください。

Apache2.2での特定のホスト名・IPアドレスからの接続を拒否する設定例 (CentOS5/6系)
//CentOS5系、6系のサーバーをご利用の場合            
Order Allow,Deny
Allow from all
Deny from 192.168.10.100 //IPアドレス 192.168.10.100 からのアクセスを拒否
Deny from hoge.com       //ホスト名 hoge.com からのアクセスを拒否
Apache2.2での特定のホスト名・IPアドレスからのみ接続を許可する設定例 (CentOS5/6系)
//CentOS5系、6系のサーバーをご利用の場合            
Order Deny,Allow
Deny from all
Allow from 192.168.10.100 //IPアドレス 192.168.10.100 からのアクセスを許可
Allow from hoge.com       //ホスト名 hoge.com からのアクセスを許可
Apache2.4での特定のホスト名・IPアドレスからの接続を拒否する設定例 (CentOS7・ALmaLinux9系)
//CentOS7系のサーバーをご利用の場合
<RequireAll>
Require all granted
Require not ip 192.168.10.100 //IPアドレス 192.168.10.100 からのアクセスを拒否
Require not host hoge.com     //ホスト名 hoge.com からのアクセスを拒否
</RequireAll>
Apache2.4での特定のホスト名・IPアドレスからのみ接続を許可する設定例 (CentOS7・AlmaLinux9系)

//CentOS7系のサーバーをご利用の場合
Require ip 192.168.10.100 //IPアドレス 192.168.10.100 からのアクセスを許可
Require host hoge.com     //ホスト名 hoge.com からのアクセスを許可
エラー画面の編集方法

ウェブサイトのエラー画面をカスタマイズすることが可能です。例えば、リンク切れやURL打ち間違いによって、ファイルが無いという場合は下記のような「404 Not Found」のエラー画面が表示されます。

  • 図1.404 Not Foundのエラー画面
  • 404 Not Foundのエラー画面

これらのエラー画面の編集するには、エラーコード(上記の例では 404) ごとに、表示させたいエラー画面のhtmlファイル(例:error.html)をお客様にてご用意ください。

エラー画面の編集に際し、.htaccessファイルの設定を間違ったり、存在しないhtmlファイルをError Documentに指定しますと、無限ループが発生してサーバーに非常に負荷がかかる恐れがありますので、ご注意ください。

エラー画面を絶対パスで指定

エラー画面のhtmlファイルを、エラー画面を編集したいドメインの任意のディレクトリにアップロード頂き、その後、.htaccess設置の流れを参考に下記の内容の.htaccessを作成し、任意のディレクトリにアップロードしてください。

ErrorDocument 404 /error.html
  • 404の部分がエラーコードになります。
  • 「/error.html」の部分には、実際に作成したhtmlファイル名のURL上での絶対パスを指定してください。
エラー画面をURLで指定

URL上での絶対パスを指定できないような、.htaccessとは別階層のディレクトリにあるファイルや、外部サーバーのページを指定したい場合は、エラーページのURLによる設定が可能です。.htaccess設置の流れを参考に下記の内容の.htaccessを作成し、任意のディレクトリにアップロードしてください。

エラーページの指定方法につきましては、特に問題が無い限り、上の「エラー画面を絶対パスで指定」をお奨めいたします。

ErrorDocument 404 http://www.example.com/error.html
  • 「http://www.example.com/error.html」の部分には、特定のエラーページURLをご指定ください。
mod_rewriteモジュールについて

mod_rewriteは、URIの動的な書き換えを実現するモジュールです。

.htaccess設置の流れを参考に、下記内容の.htaccessを作成し、設定を適用するディレクトリにアップロードしてください。

test.htmlへのアクセスで、test2.htmlの内容を表示する。
RewriteEngine ON
RewriteRule ^test\.html$ test2\.html [L]
静的なリンクに見せかけて、動的なURLを生成する

http://www.sppd.ne.jp/index/****/ へアクセスした際、 http://www.sppd.ne.jp/index.php?mode=**** のようにPHPにパラメータを渡す。※****はアルファベットと半角英数とします。

RewriteEngine ON
RewriteRule ^index/([0-9a-z]*)/$ index.php?mode=$1 [L]
ウェブサイト全体をHTTPSに変更する(専用SSLご利用者様向け)

http://www.sppd.ne.jp/ へアクセスした際、 https://www.sppd.ne.jp/ にリダイレクトさせ、強制的にHTTPSでWEBサイトを閲覧させるようにします。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
mod_headersモジュールについて

mod_headersは、HTTPリクエストのヘッダーと応答のヘッダーのカスタマイズすることができるモジュールです。

.htaccess設置の流れを参考に、下記内容の.htaccessを作成し、設定を適用するディレクトリにアップロードしてください。

動的に変化するcgiやphpのWEBページをキャッシュされないようにする設定
<Files ~ "\.(cgi|php)$">
  Header set Pragma no-cache
  Header set Cache-Control no-cache
  Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
</Files>
mod_expiresモジュールについて

mod_expiresは、ブラウザーキャッシュを制御することができるモジュールです。

.htaccess設置の流れを参考に、下記内容の.htaccessを作成し、設定を適用するディレクトリにアップロードしてください。

htmlのキャッシュ期間を15分にして、画像のキャッシュ期間を3日間にする設定
ExpiresActive On
ExpiresByType image/gif "access plus 3 days"
ExpiresByType image/jpeg "access plus 3 days"
ExpiresByType image/png "access plus 3 days"
ExpiresByType text/html "access plus 15 minutes"
mod_deflateモジュールについて (CentOS7系とAlmaLinux9系のみ対応)

mod_deflateは、コンテンツを圧縮して転送量を減らすことでWEBサイトの高速表示を可能にするモジュールです。

HTMLやCSS等のテキストファイルを圧縮することで、通信にかかる時間を低減させ、WEBサーバーへの接続から、ページの表示までの時間を短くすることが可能です。JPEGやGIFなど圧縮済みの画像ファイル、ZIPファイルなどは、既に圧縮処理がされており、効率の良い圧縮が見込めないため、mod_deflate を使うときも、圧縮対象から除外すること推奨します。

.htaccess設置の流れを参考に、下記内容の.htaccessを作成し、設定を適用するディレクトリにアップロードしてください。

mod_deflateの設定
<IfModule mod_deflate.c>
# DEFLATEを使用する
SetOutputFilter DEFLATE

# GIF、JPEG、PNGなど圧縮済みの画像は再圧縮しない
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

</IfModule>
拡張子.phpで利用するPHPを、CGI版PHPに切り替える

サーバーにCGI版PHPがインストールされている場合に、.htaccessを使用して、拡張子が .php のファイルが利用するPHPを切り替える方法をご案内します。

.htaccess設置の流れを参考に、設定を適用するディレクトリにアップロードした .htaccess ファイルに、下記のように記述して頂くことで、拡張子.phpで利用するPHPのバージョンを切り替えることが可能です。標準では、モジュール版のPHPが、.php の拡張子で利用されるようになっています。

ご利用のサーバーに、どのPHPがインストールされているかは、利用しているドメインのユーザーページ(コントロールパネル)へログインし、ユーザーページ左下の「ご利用バージョン」欄でご確認ください。

PHP8.1に切り替える場合
AddHandler php81-script .php

上記設定例の php●●-scriptの●●の部分が、利用したいCGI版PHPバージョンの上位2ケタの数字になるようにします。PHP8.1ならphp81-script、PHP7.4なら、php74-script としてください。

phpの動作環境を変更する(モジュール版のPHPのみ)

.htaccessを使用した、モジュール版phpの動作設定変更の方法を、ご案内します。

.htaccess設置の流れを参考に、設定を適用するディレクトリにアップロードした .htaccess ファイルに、下記のように記述して頂くことで、モジュール版PHPの仕様を変更することが可能です。

.htaccess では、CGI版PHPの設定変更はできませんが、.user.ini ファイルで同様の設定変更が可能です。

PHP.INIの主な設定内容については、以下のPHPマニュアルをご覧下さい。

php_flag register_globals off
PHP5.3において、ブラウザー等から送信されたデータをPHPプログラムに変数として受け渡すときの展開方法を指定します。
php_flag short_open_tag on
phpスクリプトの開始記号として、<?php ではなく <? を利用できるようにします。
php_flag display_errors off
エラーが発生したときの情報をブラウザーに表示させるか否かを指定します。
php_flag magic_quotes_gpc off
PHP5.3において、すべてのシングルクォート(')、ダブルクォート(")、バックスラッシュ(\)、及びNULLを自動的にエスケープさせるか否かを指定します。
php_value mbstring.language Japanese
mbstringで使用される 言語のデフォルト値を定義します。
php_value mbstring.internal_encoding Shift_JIS
PHP5.3において、mbstringで使用される 言語のデフォルト値を定義します。
WAF検査の除外(WAFオプションご利用者様向け)

WAFオプションご利用者の方は、.htaccessを使用して、接続元IPアドレスによるWAF検査の除外をお客様自身で設定することができます。

.htaccess設置の流れを参考に.htaccessを作成し、WAF検査を除外したいディレクトリにアップロードしてください。具体的な設定例は以下ページをご確認ください。

接続元IPアドレスによるWAF検査の除外方法(ご利用者様向け)