• 【分かって書いてる?】.htaccessの書き方と設定方法まとめ
2014/11/28SEO

【分かって書いてる?】.htaccessの書き方と設定方法まとめtakahiro

  • このエントリーをはてなブックマークに追加
htaccess_eye1

ちょっと前にサイトを作成したときに、いつも通り「.htaccess」ファイルを作成して設置しました。
ただ、.htaccessのファイル作成ってツールを使えば簡単にできますよね?「.htaccess」ってgoogle先生で検索したら1番最初に出てくるのが、【.htaccess Editor】です。これを使えばとりあえずのファイルは作成されるし、設置するだけ。

でも、そのファイルの内容ちゃんと理解できてますか?不要な記述とかはないですか?

気になって、いろいろ調べてみたけどちゃんとまとめられてるサイトが見当たらなかったので、「.htaccess」って何?っていうところから、ファイルの書き方、設定方法までご紹介していこうと思います。

 

最初の方は.htaccessの説明なので、知ってる方は飛ばしてください。

 

1.「.htaccess」って何?

そもそも.htaccessって何でしょうか?何のために必要なんでしょうか?

 

.htaccess(ドットエイチティーアクセス)とは、Apacheを用いたWebサーバにおいて、ディレクトリ単位で設置及び設定を行える設定ファイルである。

wikipediaより

 

これだけ読んでも何のことかまったく分からないかも知れません。

 

補足すると、.htaccessファイルを設置すれば、Apacheを使用しているサーバの場合はディレクトリ単位で閲覧を制御したり、リダイレクトできたりしますよ!ってことですね。

 

ここで肝心なのがApacheを使用しているということです。レンタルサーバーによっては使用できない場合もありますので、契約前に設定できるかどうか事前に必ず確認しましょう。だいたいのレンタルサーバー会社で使用できます。Q&Aにも「.htaccessは使用できますか?」という項目が必ずといっていいほどあります。

 

2.「.htaccess」で何ができるの?

では.htaccessでできることって何なんでしょうか?
上にも書いてしまってますが、大きく下のような事ができます。

 

・IDとパスワードによる制限
・IPアドレスとリモートホストによる制限
・ファイル一覧表示を隠す
・フォルダ単位でのリダイレクト

 

いろいろありますが、用途としては次のような感じで一般的には使われてますね。

 

・wwwあり、wwwなしなどのURLの統一
・Basic認証によるページへのアクセス制限

 

特にSEOにも効果があるため、URL正規化としてwwwあり・なしやindex.htmlを表示しない、スマートフォン用に作成したページへの自動リダイレクトなどではないでしょうか?

web担当者が.htaccessを設定するのはSEO効果があるからということですね。

 

「そもそもURL正規化って何?」

 

URL正規化とはサイトにアクセスできるURLを1つに統一しましょうというものです。

通常、サイトにアクセスできるURLは下記の4つがあります。

 

・www.test.jp/index.html
・test.jp/index.html
・www.test.jp/
・test.jp/

 

見ていただくと分かると思いますが、wwwの有り無しとindex.htmlの有り無しの組み合わせの4つですね。

 

URLを正規化していないとGoogleのクローラーはこの4つのページをそれぞれ内容は一緒だけど違うページとして認識してしまいます。重複コンテンツとして認識されるとSEO的にも打撃が大きいです。

 

なのでサイト製作時に.htaccessアクセスを設定して、URLを正規化することによりgoogleのクローラーから認識されるURLを1つにしましょうというものです。

話しがURL正規化にずれてしまいましたが、.htaccessを設定することで様々なことができます。設定してない場合は必ず設定しましょう。

 

3.URL正規化の為の「.htaccess」の書き方

それではさっそく.htaccessファイルの作り方を見て行きましょう。

 

.htaccessファイルは特殊ファイルなので、そのままのファイル名で作った場合はmacなどでは画面上に表示されない隠しファイルとなってしまいます。
なので、htaccess.txtというファイルを作成し編集していきましょう。ftpサーバにアップしたあとで「.htaccess」にリネームすることをおすすめします。

 

ただ、間違って.htaccessで作ってしまった場合は隠しファイルを表示することで、ファイルを表示し編集等を行いましょう。

 

まず前提知識として「.htaccess」はmod_rewriteを使用してリダイレクトなどを行っています。

 

mod_rewriteとは?

HTTPサーバーに広く使用されているApache。その追加機能(モジュール)の1つがmod_rewriteです。
mod_rewriteを使用するとリクエストされたURLを読み替えたり、ある条件を満たした場合のみリダイレクトする、なんてことができます。

参考:mod_rewriteのRewriteCondメモ

 

とりあえず、設定したい方はmod_rewriteってので.htaccessファイルは書かれてるんだなって思ってもらえばokです。

 

wwwありなしの統一

まずはwwwありなしの統一のやり方から見て行きましょう。
さっそく書いて見るとこのように書けます。

 

■wwwありに統一する場合

http://sample.comにアクセスがあった場合に、http://www.sample.com/にリダイレクトします。

 

■wwwなしに統一する場合

http://www.sample.comにアクセスがあった場合に、http://sample.com/にリダイレクトします。

 

index.htmlなしに統一

次にindex.htmlをなしに統一する方法です。index.htmlありに統一することはないと思うので、なしのみです。

■ index.htmlありに統一する場合

http://sample.com/index.htmlにアクセスがあった場合に、http://sample.com/にリダイレクトします。

 

さて、内容の解説をしていきましょう。

[RewriteEngine On]というのはmod_rewiteを使用します!という記述です。必ず書くことになる記述です。
[RewriteCond]とは「次の条件に当てはまるかどうか?」ということです。当てはまれば次の[RewriteRule]に記述されている内容を実行します。

 

【wwwなしに統一する場合】を例にとって見てみましょう。

 

ReWriteCondの後に%{THE_REQUEST}とありますが、これはアクセスされてホストを取得するための記述です。「http://○○○.com/・・・」というURLでアクセスがあった場合、HTTPホストは「○○○.com」となり、この部分を取得しています。

後半の「^http://www.sample.com」と比べて同じかどうかを判定しています。

 

ちなみに[^]は「先頭はここです」というのを表します。
[NC]というのは「no case」の略で「大文字小文字の区別をせずにパターンマッチを行いますよ」という意味です。

 

つまり、「http://www.sample.com/・・・」であればこのルールを適応します!ってことになりますね。
そして適応するルールの部分が[RewriteRule]に記述されています。

 

今回の場合は「http://sample.com/・・・」に301リダイレクトする旨のルールが書かれています。[R=301]が301リダイレクト、[L]はここでURL書き換え処理を中止し、それ以降の書き換えはしないようにするというフラグです。

 

ReWriteCondとRewriteRuleで使用できるフラグがusklogさんでまとめられてます。その他にも正規表現の書き方等も掲載されているので、調べやすかったです。mod_rewriteのフラグとかについて詳しく知りたい方は参考にしてください。

 

URL正規化にはどれに統一するのがいいの?

書き方を説明してきましたが、URLの正規化には結局どれがいいの?ということになると思います。
僕的には、「wwwなし」かつ「index.html」なしをおすすめします。URLは短い方が覚えてもらいやすいです。
ちなみにURLの長さはSEOには関係ないと言われています。

なので、僕が設定する場合は上記のようになりますね。
これをftpでドメイン直下に配置すればURL正規化は完了です。

 

4.エラーページ(404ページ)のリダイレクト

404ページへのリダイレクトも.htaccessで制御できます。

書き方もかなり簡単です。

この1行を追記するだけです。404エラーとなった場合、ディレクトリトップにある404.htmlが表示されるようになります。
任意のページを表示したい場合は下記のように書いてもokです。

「http://sample.com/・・・」の部分をページが見つからなかった場合に飛ばしたいURLに設定してください。
サイトのリニューアルなどでURLが変わるときなどには忘れず設定しましょう。

出来る限り301リダイレクトでリダイレクトできるように設定しますが、漏れがあったりする場合もありますからね。

 

【補足】

サイトリニューアルなどでURLが変更になった場合は、必ず301リダイレクトしましょう。
今までの被リンクをそのまま受け渡すことができます。
リニューアルで被リンクを失ってしまったらもったいないですよ><

「ドメインだけが変わってサイトのディレクトリ構造はそのまま」「ドメインは変わってないけどディレクトリが変更になっている」などいくつかのパターンがあると思いますので、適した記述方法で対応しましょう。

いくつか参考に書き方を記載します。

■個別ページのリダイレクト

■ドメイン変更のリダイレクト

■ディレクトリ変更のリダイレクト

 

5.アクセス制限をする「.htaccess」の書き方

次はアクセス制限を.htaccessを使って実現する方法です。

 

アクセス制限といってもいろいろあります。
例えば、IPアドレスによるアクセス制限、ドメインによるアクセス制限、アカウントとパスワードを知っている人でなければアクセス出来ないベーシック認証などが上げられます。

 

他にもありますが、上記の3つのアクセス制限の設定方法を見て行きましょう。

 

特定のホストのアクセス制限

特定のホスト(IPアドレス、ドメイン)からのアクセスを拒否する場合は、下記を参考に書いた.htaccessファイルをアクセス制限がしたいディレクトリ直下にアップロードしてください。

 

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

上記の場合は、すべてのアクセスを許可した後に特定のIPアドレスやドメインを拒否しています。

 

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

上記の場合は、すべてのアクセスを拒否した後に特定のIPアドレスやドメインを許可しています。

2つの大きな違いは、拒否と許可の順番ですね。denyとallowの順番などに注意して書いていきましょう。

 

ベーシック認証によるアクセス制限

特定のディレクトリは知ってる人にしかアクセスさせたくない場合などに使用することがあると思います。
例えば、開発中のWEBページとかですかね?

そんな場合にはベーシック認証でアカウントとパスワードを知っている人しかアクセスできないようにしてしまいましょう。

 

ベーシック認証では.htaccessファイルだけではなく.htpasswdというファイルも必要になります。
この2つのファイルの作り方を見ていきましょう。

 

まずは.htpasswdファイルを作成します。このファイルにはユーザ名とパスワードを記述します。

 

最初に登場した.htaccessEditorを使用して作ってもいいでしょう。ベーシック認証を開いてユーザ名とパスワードを入力してください。[.htpasswdを作成]というボタンを押すと「ユーザ名:パスワードが変換された文字列」が表示されると思います。これを.htpasswdファイルに記述しましょう。

※パスワードはハッシュ変換さたものを記述する必要があるので、今回は.htaccessEditorを使用しました。

 

こんなかんじで、ユーザが複数いる場合は列挙していきましょう。これで.htpasswdファイルの作成は完成です
続いて.htaccessファイルを作成していきましょう。

 

 

最初の行のAuthUserFileは.htpasswdファイルのフルパスを記載します。サーバールートからのフルパスを使用しなければいけないことに気をつけてください。レンタルサーバであればマニュアルやよくある質問などにフルパスが記載されています。

 

2行目のAuthGroupFileはログインするグループIDとパスワードの記述ファイルのパスを指定しますが、ベーシック認証では関係ないので指定がない旨の「/dev/null」と記載しておけば第条です。

 

AuthNameはパスワードをかける領域名です。ブラウザで入力ボックスに表示されるので「please enter your ID and password」などの文字を入れることも多いです。

 

AuthTypeは認証方式の記述です。ベーシック認証を使用するので「Basic」となっています。

 

最後のrequire valid-userは認証されたユーザにはアクセスを許可する旨の記述になります。

作成した.htaccessファイルは必ずアクセス制限をかけるディレクトリ直下に置いてください。

 

6.おまけ

.htaccessを使えば特定のファイルをブラウザで閲覧できなくすることもできます。

 

 

拡張子が.logのものの閲覧を制限する場合は上記のようになります。

同様に今回作成した.htaccessファイルや、.htpasswdファイルなども閲覧させないようにするのに

 

 

と記述することで保護されます。.htaccessEditorでこの記述が自動的に追加されるのは、閲覧を制限するためですね。

 

7.まとめ

今回は.htaccessに関する記述方法をまとめてみました。

正規表現での書き方なので、慣れていないと何が書いているのか分かりにくいかもしれませんね。
一度自分で書いてみるとどんなことが書かれているか分かるので、.htaccessEditorなどを使用せずに最初は作成してみることをおすすめします。

URL正規化など、.htaccessを設定していることでSEO的にも効果がありますし設定していない場合は必ず設定しましょう。

  • このエントリーをはてなブックマークに追加

この記事の著者

takahiro

takahiroWebデザイナー/ディレクター

Skill:HTML,CSS,PHP,WordPress,Photoshop

WEBサイト制作/運用/コンサルティング
たまにカメラとかもやってます。

この著者の最新の記事