.htaccess
アクセス制限などが実現できる .htaccess ファイルについてご案内いたします。
.htaccessファイルについて
.htaccessファイルを利用すると、「ユーザー名とパスワードによるアクセス制限(ベーシック認証)」、「MIMEタイプの新規追加」、「ファイル名一覧表示のON/OFF」、「PHPの動作設定変更」など、ウェブサーバーの動作をカスタマイズすることが出来ます。
以下に.htaccess の設定方法をご案内しておりますのでご参考下さい。
- .htaccess設置の流れ
- ユーザー名とパスワードによるアクセス制限(ベーシック認証)の設置方法
- 特定のホスト名・IPアドレスからの接続制限について
- エラー画面の編集方法
- mod_rewriteモジュールについて
- mod_headersモジュールについて
- mod_expiresモジュールについて
- mod_deflateモジュールについて (CentOS 7系とAlmaLinux 9系のみ対応)
- 拡張子.phpで利用するphpを、CGI版PHPに切り替える
- phpの動作環境を変更する (モジュール版のPHPのみ)
- WAF検査の除外 (WAFオプションご利用者様向け)
.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方式)でエンコードしたパスワードを記入してください。エンコードには下の変換フォームをご利用ください。
パスワード変換フォーム
設定をするユーザー名とパスワードを入力し、「パスワード変換」を押してください。
パスワードファイルを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) ごとに、表示させたいエラー画面の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マニュアルをご覧下さい。
- ビジネス・パーソナルシリーズのPHP8.3の詳細 (AlmaLinux 9系の標準)
- ビジネス・パーソナルシリーズのPHP7.3の詳細 (CentOS7系の標準)
- ビジネス・パーソナルシリーズのPHP7.2の詳細 (CentOS6系の標準)
- ビジネス・パーソナルシリーズのPHP7.1の詳細 (CentOS6系の以前の標準)
- ビジネス・パーソナルシリーズのPHP5.6の詳細 (CentOS5/6系の一部)
- ビジネス・パーソナルシリーズのPHP5.3の詳細 (CentOS5系の標準)
- 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検査を除外したいディレクトリにアップロードしてください。具体的な設定例は以下ページをご確認ください。