【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ファイルについて忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説