【CakePHP入門】.htaccessとは?用途や設定方法を解説!

みなさんは.htaccessというファイルをご存知でしょうか?

.htaccessは、WebサーバのApacheを設定することができるファイルです。

この記事では、

・.htaccessファイルとは
・.htaccessの中身や有効範囲
・.htaccessの設定方法

などの.htaccessの基本的な使い方について解説していきます。

.htaccessファイルは使用するWebサーバーの設定を自由に設定することができますので、興味のある方はぜひ参考にしてください!

目次

.htaccessとは

htaccess(エイチティアクセス)とは、Apache(アパッチ)と呼ばれるWebサーバのソフトウェアを制御するための設定ファイルの1つです。

Apache(アパッチ)とは、世界中で最もよく使われているWebサーバーのソフトウェアで、基本的に無料なため、個人から企業まで幅広く使用されています。

htaccessを利用することで、さまざまなApacheの設定を行うことが可能です。

具体的には、

・IDとパスワードの制限
・IPアドレスとリモートホストの制限
・タイムゾーンを設定
・文字コードの設定
・表示するページの設定
・インデックスファイルの設定
・URLの自動転送
・エラーページの設定
・特定のファイルをダウンロード

などの設定が可能です。

.htaccessを確認してみよう

ここでは、.htaccessファイルの中身を見ていきましょう。

CakePHPでは.htaccessファイルはCake/webrootに格納されています。

.htaccessは隠しファイルとなりますので、そのままではフォルダから参照することはできません。

・隠しファイルの表示方法
Windowsの場合は、エクスプローラーウィンドウから表示タブを選択し、「ファイル名拡張子」「隠しファイル」にチェックを入れます。

MacやLinux系OSの場合はターミナルからCake/webrootに移動し、「ls -a」コマンドを実行すると.(ドット)で始まる隠しファイルを表示することができます。

$ls -a

表示結果:

.        .DS_Store    css        font        index.php
..        .htaccess    favicon.ico    img        js

また、.htaccessを設定するには元々のファイルはリネームしてバックアップするか、別名でファイルを作成して、編集後のサーバーにアップロード時に.htaccessにリネームする方法があります。

・.htaccessファイルの中身
CakePHPの3.x系では.htaccessの中身はデフォルトで以下のようになっています。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

デフォルトでは、mod_rewriteと呼ばれるURLの書き換えを行うモジュールの設定が記述されています。

RewriteEngine On
mod_rewriteを有効にする。

RewriteCond %{REQUEST_FILENAME} !-f
アクセスされたURLにファイルが存在しない場合。

RewriteRule ^ index.php [L]
GETメソッドでアクセスされたデータをindex.phpにリライトする。

htaccessの有効範囲

.htaccessファイルには有効範囲があります。

例えば以下のようにディレクトリTESTAに.htaccessファイルが合った場合は、ディレクトリTESTA、TESTA-1、TESTA-2にhtaccessの設定が有効になります。

ディレクトリTESTB、TESTCには.htaccessファイルの影響は受けません。

TOP--|--TESTA
     |   .htaccessファイル
     |    |--TESTA-1
     |    |--TESTA-2
     |
     |--TESTB
     |--TESTC

.htaccessの設定方法

ここでは、実際に. htaccessの設定方法を記述してみましょう。

以下に. htaccessファイルでよく設定する項目を紹介します。

エラーページの設定

404や500などのアクセスした際のエラー時に、オリジナルのエラー表示を設定することができます。

以下のように追記するだけで、404エラーになった場合などに404.htmlが表示されます。

ErrorDocument 400 /400.html
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

リダイレクト

リニューアルなどでサイトのURLやディレクトリを変更した場合に変更前のURLでのアクセスを新しいURLに転送します。

Redirect permanent 変更前URL  変更後URL

以下のように指定すると、どのページからのアクセスも自動的にひとつのURLへ転送することができます。

Redirect 301 .*  http://www.sejuku.net/

タイムゾーンの設定

以下の例ではタイムゾーンを日本時間に設定しています。

SetEnv TZ Asia/Tokyo

アクセスの制限

特定のIPアドレスやドメインなどのアクセスを制限したり、許可したい場合は以下のように記述します。

・すべてのアクセスを制限

order deny,allow
deny from all

・特定のホストでのアクセスを制限

order allow,deny
allow from all
deny from sample.co.jp      #sample.co.jp を制限
deny from .aaa.com              #〜.aaa.com を制限
deny from xxx.xxx.xxx.xxx   #制限したいIPアドレス

・特定のホストのアクセスを許可

order deny,allow
deny from all
allow from sample.co.jp      #sample.co.jp を許可
allow from xxx.xxx.xxx.xxx   #許可したいIPアドレス

指定した拡張子のファイルを保存する

画像ファイルやPDFなど、PCへダウンロードさせたいファイルの拡張子を指定することができます。

AddType application/octet-stream .txt
AddType application/octet-stream .doc
AddType application/octet-stream .jpg
AddType application/octet-stream .png
AddType application/octet-stream .pdf

まとめ

ここでは.htaccessファイルの用途や設定方法などについて解説しました。

普段.htaccessファイルを意識することは少ないと思いますが、Apacheのリダイレクトやエラーページの作成を簡単に行うことができます。

もし、.htaccessファイルについて忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次