WEBサイトを作成しているとベーシック認証やリダイレクト処理などで度々利用することになる「.htaccess」についてまとめてみました。「.htaccessとは?」や「.htaccessで出来ること」などWEB制作の初心者に理解できるようにいい加減に丁寧に解説していきます。
.htaccessとは
.htaccess(ドットエイチティーアクセス)とは、Apacheを用いたWebサーバにおいて、ディレクトリ単位で設置及び設定を行える設定ファイルのことを言います。
Apacheではhttpd.confという設定ファイルでApacheの設定を行うが、Webサーバの要となる設定ファイルであるため、Webサーバの管理者でないと設定を変更することができない。.htaccessはhttpd.confで.htaccessの利用を許可している場合、Webサーバ管理者のみならずウェブサイトの管理者レベルでApacheの一部設定を行えるようにしたものである。
.htaccessで行える設定は全てhttpd.confで行うことができ、パフォーマンスやセキュリティの観点からそれが推奨されているが、実際はサーバー管理者も.htaccessを使うケースが多い。
.htaccessを特定のディレクトリに設置すると、.htaccess内に記述された内容が設置されたディレクトリとその下層のディレクトリに対して適用される。また、下層ディレクトリの設定が上層ディレクトリと設定が矛盾した場合は下層ディレクトリ側の設定が優先される。
ファイル名の先頭にあるドットはUnix系のオペレーティングシステムにおいて「隠しファイル」を意味しており、「ファイルタイトルが存在しない.htaccessという拡張子だけのファイル」という意味ではない。(.htaccess/wekipedia)
・ちょっとややこしい説明ですが、Webサーバーをディレクトリ単位で制御するためのファイル(=サブディレクトリにも.htaccessを設置することは可能)で、 リダイレクトやベーシック認証、404エラーページの作成なんかが出来ることを覚えておくだけでまずが良いと思います。
.htaccessの作成と設定方法
.htaccessはテキストファイルですので、 設置や編集は非常に簡単です。Windowsに標準搭載されている「メモ帳」やMacであれば「テキストエディット」など、テキストエディタがあれば作成ができます。HTMLやCSSを記述するのにDreamweaverなどを使用しているならそちらを使用してください。
.htaccessの作り方は非常に簡単です。
(1) テキストエディタを使って、必要な設定を記述する
(2) それを「.htaccess」というファイル名で保存して設置したいディレクトリ内へFTPソフトなどでアップする
以上です。Congratulations!
設定のポイント
・設置する場所は設定を有効にしたいディレクトリです。サイト全体をしていする場合はトップに設置します。
・「.htaccess」ファイル内の最後には、必ず改行を入れること。改行がないと動かない場合があります(適当に2~3行の空行を末尾に入れておくと良い)。
・拡張子に注意!メモ帳で作成した場合は「.htaccess.txt」というファイル名で保存されてしまいます、サーバーにアップしたあとでファイル名の変更「.txt」の拡張子を削除することを忘れないようにしましょう。
Macでは「.」で始まるファイルが表示されないので「ターミナル」を開いて
defaults write com.apple.finder AppleShowAllFiles true killall Finder
を入力すると表示されるようになります。
.htaccessでは、# から始まる行がコメントアウトされます。
# ここはコメントです DirectoryIndex index.html "# 行の途中でコメントの使用は避けましょう"
行の途中でもコメントをつけることは可能ですが、Apacheのバージョンや、記述場所によってはエラーになることがあすのでコメント行はなるべく独立させましょう。行の途中でコメントをつける場合は、” で囲むことでコメントアウトが可能です(ただし、Apache ver1.3系ではエラーになるため、Apache ver2.0系以降である必要があります)。
.htaccessでできる具体例の紹介
.htaccessでリダイレクトさせる方法
.htaccessでは指定したURLへリダイレクト(転送)させることができるので、サイトをリニューアルした際によく使用します。他にもドメインの前の 「www」 の有無を統一させる場合などに使用します。
指定のURLから別のURLへのリダイレクトさせる方法
RewriteEngine on RewriteBase / RewriteRule 転送元ファイル\.html http://転送先URL [R=301,L]
ディレクトリごとリダイレクトさせる方法
ケース1:ファイル名を引き継がない方法
RewriteEngine on RewriteBase / RewriteRule ^ディレクトリ名/(.*)$ http://転送先URL [R=301,L]
ケース2:ファイル名を引き継ぐ方法
RewriteEngine on RewriteBase / RewriteRule ^ディレクトリ名/(.*)$ http://転送先URL/転送先ディレクトリ名/$1 [R=301,L]
ケース3:類似したファイル名のURLをまとめる
2015aaa.html
2015bbb.html
2015ccc.html
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} 2015(.*)\.html RewriteRule ^(.*)$ http://転送先URL [R=301,L]
ケース4:特定のディレクトリをリダイレクトから除外する方法
.htaccessを設置したディレクトリ内に、別ドメイン用のディレクトリが存在する場合などに使用します
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} !(^/除外ディレクトリ名/) RewriteRule ^$ 転送先URL [R=301,L]
ファイルは増えますがシンプルにこちらの.htaccessを指定のディレクトリに設置するだけでも可能です。
RewriteEngine off
ケース5:特定のファイルをリダイレクトから除外する方法
例、画像ファイルをリダイレクトさせない場合
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|jpeg)$ [NC] RewriteRule ^(.*)$ http://転送先URL/転送先ディレクトリ名/ [R=301,L]
wwwの有無の統一する方法
ケース1:www無しに統一する場合
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.ドメイン名\.com RewriteRule ^(.*)$ http://ドメイン名/$1 [R=301,L]
ケース2:www有りに統一する場合
RewriteEngine on RewriteCond %{HTTP_HOST} ^ドメイン名\.com RewriteRule ^(.*)$ http://www.ドメイン名/$1 [R=301,L]
「ページが見つかりません」404ページの設定方法
ErrorDocument 404 /404.html
以前、紹介したこちらの記事を参考に挑戦してみてくださいWEBサイトのオモテナシ?お洒落な404エラー画面が海外で話題(当サイトはまだ対応できていません・・)
アクセスを制限する
.htaccessを設置にすることによって外部からのアクセスを拒否することができます。
IPによる制限例
order deny,allow deny from all allow from xxx.xxx.xxx.xxx
1行目で拒否、許可を設定
2行目ですべてを拒否
3行で許可するIPを設定しています。
.htaccessでベーシック認証をさせる
ベーシック認証とは?.htaccessを設置したディレクトリにアクセスする際に IDとパスワードの入力をユーザーに求めることができるというものです。
AuthType Basic AuthName "TEST" AuthUserFile フルパス/(制限をかけたいディレクトリ)/.htpasswd require valid-user
1行目で認証方法として「Basic認証(基本認証)」を使う指定をしています。
2行目で認証に使う領域名(認証ダイアログにメッセージとしても表示されます)の指定をしています(日本語も可能です)。
3行目で後述するパスワードファイル(.htpasswdファイル)の所在の指定をしています。
4行目で「認証されたユーザーにアクセスを許可する」指定をしています。
次に3行目で指定した「.htpasswd」のファイルを設置します。
ファイル作成の方法は「.htaccess」と同じです。
ID:PASSの順に記述します。
test:password
この場合IDはTEST、PASSはpasswordになりますが、PASSを変更する必要が有ります。
こちらのサイトなどでパスワードを簡単に暗号化することができます。
基本認証用パスワード暗号化
暗号化したものがこちら
test:PoWvHTQWfZl9U
(IDとパスワードは大文字・小文字が別の文字として扱われるので注意!)
※フルパスについてはレンタルサーバーなどの場合は確認をしてください。
フルパスを調べる方法
<?php echo __FILE__; ?>
まとめ
いかがでしたでしょうか?
長くなってしまいましたが、全部を覚えて空で書く必要はないので「.htaccess」=こういうことが出来る「便利なファイル」と知っておけば問題ないと思います。
他にも.htaccessではPHPを「.html」拡張子で動かすことなども可能です。
こちらはレンタルサーバーなどで少し指定の方法が変わってきます。
(この記事をシェアする↓)
“.htaccessについて(WEBデザイナーの備忘録)” への5件のフィードバック