1. sunnyG

    No comment

    sunnyG
Changes in body
Source | HTML | Preview

htaccessと言う単語自体はちょくちょく聞いたりしてたんですが、
そもそもhtaccess自体が何なのか、何を指しているのかよくわからなかったので、
それに関しての備忘録です。

.htaccess とは

.htaccess(ドット・エイチ・ティ・アクセス)とは、Apache(アパッチ)などのソフトウェアが使用されている環境で使用可能なディレクトリ単位のWebサーバー設定ファイルです。

これが特定のディレクトリに設置されると、「.htaccess」内に記述されている内容が、設置されたディレクトリ内とその下層のディレクトリ内に対して適用されます。

いつ .htaccess ファイルを使うか

基本使わない

基本的に、.htaccess ファイルの使用は極力避けてください。

ユーザ認証の設定は httpd.conf (サーバ主設定ファイルのこと) に書くことができますし、実際その方がより良い設定方法とされています。

どんな時に使用すべきか

.htaccess ファイルは、ディレクトリ毎の設定を行ないたいけれど、サーバシステムのファイルは、 root アクセス権限を持っていないという場合にのみ使うべきものです。ディレクトリ毎の設定を行ないたいけれど、サーバシステムの root アクセス権限を持っていないという場合にのみ使うべきものです。

例えば、レンタルサーバーなどで自分専用にWEBサーバーの設定を変えたい場合は、.htaccess ファイルを格納することで、WEBサーバの設定変更(一部)を行うことができます。

他にも、サーバ管理者が頻繁に httpd.conf の設定変更を行ないたくはないので、個々のユーザが .htaccess ファイルを使って設定変更を行なうことを許可したい!そんな時に使用します。

しかし、使用する場合は、httpd.conf でAllowOverrideディレクティブを使って、最低限の許可しか与えないようにすべきですね。

.htaccess ファイルの作り方

windows環境では、「.htaccess」というネーミングでファイル作成ができません。
その為、以下の手順での作成が必要です。

  1. テキストエディタで『○○○○.htaccess』という名前のファイルを作成して保存
  2. Apacheで制御・設定したい事を記述し保存
  3. サーバーにアップロードして『.htaccess』という名前にリネーム(ファイル名の変更)

.htaccess で出来る事

代表的な3つの項目に分けて、順に設定手順を解説していきます。

1.ベーシック認証

ディレクトリなどに認証を付けてID/パスワードの入力を強制する仕組みのことです。
用途としては、以下のようなものがあります。

  • 公開前のサイトをユーザーとGooglebot共に弾きたい場合
  • アイパスを知っている人だけに公開したい場合

こちらを設定するには、「.htpasswd」というファイルも必要になります。(作成手順に関しては、上述している.htaccessファイルの作成手順と同じです)

まず、「.htaccess」に下記内容を記述してください。

AuthUserfile /フルパス/.htpasswd
AuthGroupfile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

上記の、「AuthUserFile」に記述しているパスに、「.htpasswd」を配置する必要があります。

次に、「.htpasswd」に下記内容を記述してください。

id:password

idはそのまま記載しますが、passwordの箇所は暗号化する必要があるので こうしたサイト を利用して暗号化します。

2.301リダイレクト

SEOで最も利用される転送方法で、旧ページから新ページへ評価を継承できるものです。
恒久的な移転と呼ばれ、URLの変更やドメインの移転の際に利用します。

○設定例:
http://example.com/old.html ページから http://example.com/new.html へ301リダイレクトを行う場合

RewriteEngine on
RewriteRule ^old.html$ http://example.com/new.html [R=301,L]

詳しくは、 301リダイレクトについて、必要性と設定手順をまとめてみた を参照してください。

3.URLの正規化

URLを1つに統一することを指します。
例えば、以下の場合、Googleはそれぞれ別のURLという認識を行なうものの、一般的には同じページが表示されます。

設定例:index.html有り無しの統一(index.html無しに統一する場合)

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L]

設定例:www有り無しの統一(www無しに統一する場合)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

因みに、www有りに統一したい場合は、以下のような記述になります。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

参考

Apache コア機能
Apacheチュートリアル : .htaccessファイル
301リダイレクトについて、必要性と設定手順をまとめてみた
.htpasswd生成