.htaccessとは 何ができるの?設置場所や注意点、活用方法を併せて紹介!

.htaccessとは 何ができるの?設置場所や注意点、活用方法を併せて紹介!

公開日:2022/7/15
 最終更新日:2022/7/15

ホームページのリニューアル時の301リダイレクトや、ベーシック認証などに活用できる「.htaccess(エイチティーアクセス)」。
本記事ではそんな.htaccessについて、.htaccessとはどんなものなのか、できることや使うための条件から、具体的な作成方法まで、徹底解説いたします。

なお、ホームページ作成をご検討なら、BESTホームページをご検討ください。


01「.htaccess」とは?

ホームページやブログなどを運用されている場合、FTPソフトなどでサーバー上のファイルを直接確認すると「.htaccess」という拡張子だけの不思議なファイルを見た経験があると思います。

この「.htaccess(エイチティーアクセス)」というファイルは、Apache(アパッチ)と呼ばれるWebサーバーの制御を行う設定ファイルです。

通常Webサーバーに関する設定は「httpd.conf」で行いますが、編集するにはオペレーティングシステム側の強い管理権限が必要になってしまいます。
そこで、Webサーバーの管理者レベルの権限で簡単に設定の追加や変更が行えるように用意されたのが「.htaccess」です。

1-1..htaccessで何ができる?

.htaccessをWebサーバーに追加することで、通常であればEclipseなどの統合開発環境などで個別にプログラミングが必要な制御を手軽に追加できます。
例えば、

  • 特定のURLにアクセスがあった場合に、自動的に別のURLに転送(リダイレクト)
  • ブラウザーに認証用にIDとパスワードを入力するフォームを表示して、閲覧者のアクセスコントロールをする
  • 特定のIPアドレスやドメイン名を指定してアクセス制限を行う

などの、様々な処理を特別なプログラムを作成せずにWebサーバーに追加できます。

1-2.どんな人が使う?

Webサーバーの管理しているディレクトリ(フォルダー)へのアクセス権限があれば .htaccessを設置して、リダイレクト(転送)やアクセス制限などの設定を追加することができます。

  • 突発的なサイトのエラー発生時の障害ページへの一時的な誘導
  • URL変更時の恒久的なリダイレクト処理
  • パスワードなどでアクセス制限を行う限定的なコンテンツ公開

など、柔軟なWebコンテンツの運用をしたい管理者に有用な機能です。

しかし、設定に漏れや誤りがあると、サイトのセキュリティが低下し、検索エンジンに関する評価に影響を与えてしまう可能性があるため、設置や設定内容には注意が必要です。

「.htaccess」とは?

02.htaccessの利用条件

.htaccessは、すべてのWebサーバーでは利用できません
利用する場合には、次のような条件を確認しておく必要があります。

2-1.Webサーバーが「Apache」である

ホームページやブログなどを配信するサーバーには「Webサーバー」と呼ばれるソフトウェアがインストールされている必要があります。

レンタルやホスティングで利用するサーバーは、ほとんどの場合オペレーティングシステムとしてUbuntu(Linux)が採用されています。
そのため、伴って「Webサーバー」としてApacheが設定されていますが、他のソフトウェア(例えばMicrosoft IISなど)が設定されている場合には .htaccessは利用できません

利用するサーバーにインストールされている「Webサーバー」を事前に確認しておく必要があります。

2-2..htaccessが制限されていることも

Apacheがインストールされているサーバーでも、セキュリティやトラブル防止のために .htaccessの設置や変更を禁止している場合があります。

他の代替機能を提供している場合もありますが、詳細な設定をするのが難しい場合があるので .htaccessを使う場合には、利用するサーバーの仕様を確認しておく必要があります。

.htaccessの利用条件

03.htaccessの作成手順

.htaccessファイルは、内容がテキストで構成されているため、エディターを使って簡単に作成することができます。
例えば、Windowsであれば次の手順で作成ができます。

  1. 1. [メモ帳]を起動します。
  2. 2. [ファイル|名前を付けて保存]メニューを選択します。
  3. 3. 表示された[名前を付けて保存]画面でファイル名に「.htaccess」と入力して[保存]をクリックします。

古いWindowsのバージョンや一部のMacintoshの場合には、「.(ピリオド)」で始まる名前のファイルが作成できない場合があります。

ファイル名でエラーになる場合には「a.htaccess」など先頭に適当な文字を追加した名前でファイルを作成した後でサーバーにアップロードし、アップロード後にファイル名を変更するといった対処方法があります。

.htaccessの作成手順

04.htaccess 記述の注意点

メモ帳で簡単に作成できる .htaccessですが、記述する内容には注意するポイントがあり、間違った記述のファイルを適用すると、サーバーでエラーを引き起こしてしまう可能性があるので注意が必要です。

4-1.コメントアウト

先頭に#(シャープ)追加すると、行全体のコメント(処理を実行しない)にできます

処理する内容に関するメモ書きとして残しておくことで、後で確認する際に記載されている内容が理解しやすくなります。
また、一時的に除外したい処理内容を削除せずコメントにするなど様々な使い方があります。

4-2.文字コード

ファイルを保存する際に、文字コードは UTF-8(BOM無し)を選択します。
古いWindowsのメモ帳では文字コードがUTF-8以外になってしまうため注意が必要です。

改行コードはLF(ラインフィード)が推奨ですが、Windowsのメモ帳を使う場合には既定値のCR+LF(キャリッジリターン+ラインフィード)でも利用できます。
また、サーバーにアップロード後に、動作しない場合には改行コードが変更できるテキストエディターで改行コードを編集します。

4-3.末尾の改行

.htaccessの設定内容は最後に改行で終わる必要があります。
ファイルを保存する際には最終行を確認します。

.htaccess 記述の注意点

05.htaccessの設置について

5-1.設置方法

.htaccessファイルは、サーバー管理用のファイルマネージャーやFTPサービスを使ってアップロードしてWebサーバーに保存します。

また、ファイルの保存後すぐにWebサーバーに反映されるため設定操作などは必要ありません。

5-2.設置場所

.htaccessはアップロードしたディレクトリ(フォルダー)で記述した内容が反映されます。
ディレクトリ毎に異なる記述をした .htaccessを保存することもできます。

アップロードするWebサーバー内のディレクトリ(フォルダー)が階層構造になっている場合には、反映されるルールや制限があるため注意が必要です。
例えば、Webサーバー内のディレクトリが次のような階層構造の場合

[root]
 |-[page1]
 |-[page2]
 |-[page3]
     |-[content1]
     |-[content2]

[page3]ディレクトリにアップロードした場合には[page3]と[content1]、[content2]の3つのディレクトリに .htaccessの内容が適用されます。([page1]と[page2]は適用されません)

また、複数のディレクトリに .htaccessが保存される場合には、下位のディレクトリが優先されます。
例えば、上記の階層構造の場合[content1]に別の.htaccess をアップロードした場合には、[page3]に保存した .htaccessと記述が異なる場合には、下位の[content1]ディレクトリ側の記述が優先されます。

.htaccessの設置について

06.htaccess設置時のトラブル

.htaccessは特殊なファイル名のために利用するアプリケーションやソフトウェアによっては表示されないトラブルに遭遇する場合があります。

.htaccessの表示トラブルに関しては次の2つが考えられます。

  • .htaccessが表示されない
  • .htaccessが作成されていない

それぞれの対応策について紹介していきます。

6-1..htaccessが表示されない

ディレクトリ(フォルダー)内にファイルが存在する場合でも、ファイル名の先頭にドットがある場合、LinuxやMacintoshでは隠しファイルとして認識します。
そのため利用しているアプリケーションによっては、隠しファイルとして非表示になっている可能性があります。

例えば、FTPアプリケーション[FFFTP]の場合には[表示|.で始まるファイルを表示]メニューが無効(チェックが入っていない)の場合には非表示になるため、有効(チェックが入っている)にすることで .htaccess ファイルが表示されます。

6-2..htaccessが作成されていない

ディレクトリのアクセス権限によっては、アップロードに失敗してファイルが保存されていない場合があります。

例えば、[FFFTP]アプリケーションの場合には、[コマンド|属性の変更]メニューで表示された[属性の変更]画面で、[現在の属性]を775 に変更してからファイルのアップロードを再試行してみます。

.htaccess設置時のトラブル

07.htaccessの検索エンジン対策(SEO)への活用方法

7-1.ユーザー名とパスワードで認証

Webサーバー上で公開しているコンテンツにアクセスされた場合、ユーザー名とパスワードを入力する画面を表示してアクセス制限を追加するベーシック認証を使うことができます。

次の手順でユーザー名とパスワードを入力する画面を表示して認証できます。

①パスの確認

ベーシック認証をする際に入力するパスワードを記載したファイルを、保存する場所(パス)を確認します。
サーバー側の設定でサイトURLと一致しない場合があるので、PHPコードを利用して確認します

  1. 1. メモ帳を起動して、PHPコードを追加します。

  2.  <?php echo __FILE__; ?>

  3. 2. 名前(例:path.php)を付けて保存します。
  4. 3. Webサーバー上のベーシック認証を行うディレクトリ(フォルダー)にアップロードします。
  5. 4. ブラウザーでアップロードしたPHPファイルを表示して画面に表示されたパスをメモします。

②.htaccessファイルの作成

表示されたパスを使って .htaccessファイルを作成します。

  1. 1. メモ帳を起動して、次の内容を追加します。

  2.  [.htaccess”]
     AuthType Basic
     AuthName "ベーシック認証"
     AuthUserFile <ブラウザーに表示されたパス>/.htpasswd
     require valid-user

  3. 2. 名前(.htaccess)を付けて保存します。
  4. 3. Webサーバー上のベーシック認証を行うディレクトリにアップロードします。

③.htpasswdファイルの作成

入力されたユーザー名とパスワードを確認する .htpasswdファイルを作成します。
パスワードは暗号化して保存する必要があるため、専用ツール(LUFTTOOLSなど)を使って作成します。

  1. 1. メモ帳を起動して、暗号化されたパスワードとユーザー名をコロンで区切って追加します。

  2.  user1:4IyqUS/s3dY5g

  3. 2. 名前(.htpasswd)を付けて保存します。
  4. 3. Webサーバー上のベーシック認証を行うディレクトリにアップロードします。

すべてのファイルをアップロードしたら、ブラウザでホームページURLにアクセスするとユーザー名とパスワードを入力する画面が表示され、ベーシック認証の機能が使えます。

7-2.301リダイレクトの利用方法

指定したURLにアクセスした場合に、別のURLにリダイレクト(自動転送)ができます。
HTMLのMETAタグやJavaScriptを使っても同様にURLのリダイレクト処理をすることができますが .htaccess ではステータスコードを使って、Googleなど検索エンジンの評価を引き継いでリダイレクトを行うことが可能です。

例えば、サイトの引っ越しなどで別のURLにリダイレクトする場合には、ステータスコード301を設定することで、検索エンジンの評価に影響がない形でリダイレクトを行えます。

実際にステータスコードを指定したリダイレクトは .htaccessに次のように記載を行います。

[.htaccess”]
RewriteRule ^/<転送元のファイル>$ <転送先のURL>[R=301,L]

また、次のようにディレクトリ(フォルダー)を指定して、配下のフォルダーやファイル全体の転送もできます。

[.htaccess”]
RewriteRule ^<転送元のディレクトリ>(.*)$ /<転送先のディレクトリ>$1 [R=301,L]

7-3.URLの正規化と統合

リダイレクトの機能を応用して、複数のURLを設定したコンテンツに対する検索エンジンの評価を統一することができます。

例えば、ホームページを表示する際に www.sample.com と sample.com で同じページが表示される場合には、Googleなどの検索エンジンはそれぞれのURLを別のサイトとして識別し、重複するコンテンツが使われていると判断してそれぞれのサイトの評価を下げてしまうリスクがあります。

そこで.htaccessで次のようなURLの正規化を使うことで、複数のURLの統合ができます。

[.htaccess”]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(sample.com)(:80)? [NC]
RewriteRule ^(.*) https://sample.com/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ https://sample.com/$1 [R=301,L]

7-4.IPアドレスやドメインを利用したアクセス制限

ユーザー名とパスワードを利用したベーシック認証の他に、ドメイン名やIPアドレスを利用したアクセス制限が追加できます。

例えば、特定のIPアドレスからの不正なアクセスを遮断する場合や、ホームページやWordPressなどの管理用のコンテンツを利用する端末を限定する場合に有効です。
コンテンツにアクセスできるIPアドレスやドメイン名を限定したい場合には、次のように記載します。

[.htaccess”]
order deny,allow
deny from all
allow from 123.123.123.123(アクセスを許可するIPアドレス)
allow from sample.com(アクセスを許可するドメイン名)

反対に、IPアドレスやドメイン名指定をしてアクセスできないように制限をする場合には、次のように記載します。

[.htaccess”]
order allow,deny
allow from all
deny from 234.234.234.234(アクセス制限するIPアドレス)
deny from sample.com deny from 234.234.234.234(アクセス制限するドメイン名)or

.htaccessの検索エンジン対策(SEO)への活用方法

08.htaccess設定に関するリスク

IPアドレスやドメイン名を使ったアクセス制限や、URLのリダイレクトなど、便利な機能を有効にできる .htaccessですが、記述する内容に誤りや漏れがある場合サイトに不具合や、検索エンジンへの対応が効かない可能性があります。

.htaccessの追加を原因とした、サイトで発生するエラーや表示に関する不具合は、事前のテストや更新後の運用ですぐに解決や対策を行うことができます。
ですが、検索エンジンの評価に関する部分は、影響が出るまでに時間がかかるために、気が付いた時には取り返しがつかない事態になるリスクがあります。

ホームページのリニューアルなどで .htaccessでリダイレクト処理をしていた場合に、記載ミスでエラーページや、ユーザーの関心がないページが表示されていたような場合には、意図せず離脱率を上げてしまう結果になってしまいます。

そのため、.htaccessへの記載内容や設置場所に細心の注意を払う必要があります。

.htaccess設定に関するリスク

09まとめ

今回は .htaccess を使ってWebサイトのURLを制御する方法をご紹介しました。
.htaccess を活用することで、次のような機能をサイトに追加することができます。

  • ユーザー名とパスワードを使ったコンテンツの限定公開する仕組み
  • IPアドレスやドメイン名を指定してコンテンツへのアクセス制限
  • 特定のURLからのリダイレクト
  • 複数のURLで表示されるページの統合化

これらの機能を使うことで、サイトに対する利用者の使い勝手向上というメリットの他にも、リダイレクトやページの統合など、Googleなどの検索エンジンがサイトを評価する際のメリットも受けられます。

ぜひ、ホームページの作成をする際に参考になさってください。

もしホームページの作成をご検討されている場合には、簡単な操作でホームページの作成ができる弊社の「BESTホームページ」もご検討ください。
BESTホームページは、専門的な知識が必要なく直感的な操作でページを制作が可能です。

閲覧にパスワードが必要なページなども簡単に作成でき、アルバムの閲覧や資料ダウンロードなどにもご活用いただけます

初期費用は無料、月額税込6,490円〜と、大変お得な料金で利用していただくことが可能です。
今なら15日間無料で体験ができますので、ぜひお気軽にお試しください。

ぜひこちらからお気軽にお問い合わせください。

― この記事を書いた人 ―

BESTホームページ運営事務局

BESTホームページ運営事務局

3万サイト・30万ページの提供実績を持つホームページ制作会社が運営。成果の出るホームページ作成・運用ノウハウを初心者の方にも分かりやすくお伝えします!

> このライターの記事一覧



― Let's Share! ―