.htaccessは、Apache(アパッチ)というWebサーバーの動作をディレクトリ単位で変更できる設定ファイルです。
root権限のないレンタルサーバーでも、リダイレクトやBasic認証といったサーバー側の制御を数行の記述で実現できます。
ただし扱いはシビアで、改行コードや拡張子ひとつの違いでサイト全体が500エラーになることもあります。
この記事では、.htaccessの仕組みとできることを整理したうえで、htaccessの書き方を目的別の記述例つきで解説します。
コピーして使える形で載せているので、置き場所と基本ルールだけ確認してから設定に進んでください。
.htaccessとは

.htaccessとは、WebサーバーソフトウェアApacheの動作を、ファイルを置いたディレクトリ単位で制御できる設定ファイルです。
本来はサーバー管理者がroot権限(管理者権限)で行う設定変更を、一般のサイト運営者が自分のサイトの範囲内だけで実行できます。
対象ユーザーのほとんどはレンタルサーバーの利用者です。サーバー全体の設定ファイルに触れない環境では、.htaccessがリダイレクトやアクセス制限を自分で設定するための実質的に唯一の手段になります。
読み方と名前の由来
読み方は「ドット・エイチティー・アクセス」です。
Hypertext Access が名前の由来で、先頭にドットが付くのはUnix系OSで隠しファイルとして扱うための仕様です。
FTPソフトやMacのFinderで見つからないときは、隠しファイルの表示を有効にすると出てきます。
使えるサーバーの条件は2つ
.htaccessが動く条件は次の2つです。
・WebサーバーがApache(またはApache互換のLiteSpeed)であること
・サーバー側の設定でAllowOverride(.htaccessによる上書きの許可)が有効になっていること
NginxやIIS(Microsoftのサーバーソフト)では使えません。国内の主要レンタルサーバーはApacheかLiteSpeed系が中心で、初期状態から.htaccessを利用できます。
VPSなど自分で構築したサーバーでは、httpd.conf側のAllowOverrideがNone(無効)になっていないか確認が必要です。
httpd.confとの関係
Apache本体の設定ファイルはhttpd.confで、.htaccessはその出張所にあたります。
httpd.confがサーバー起動時に1回だけ読み込まれるのに対し、.htaccessはアクセスのたびに毎回読み込まれます。設定が即座に反映される反面、アクセス数の多いサイトではわずかに負荷が増えます。
Apacheの公式ドキュメントも「主設定ファイルにアクセスできない場合を除いて、.htaccessの使用は極力避けるべき」と明記しています
(出典:Apache HTTP Server チュートリアル: .htaccess ファイル)。
root権限があるならhttpd.confに書く方が高速です。逆に言えば、レンタルサーバーでは.htaccessを使うのが正解になります。
.htaccessでできること6つ

機能は多岐にわたりますが、実務で使うのはほぼ次の6つです。
| 機能 | 主な用途 |
|---|---|
| 301リダイレクト | サイト移転・URL変更時の転送 |
| URLの正規化 | https・wwwあり/なしの統一 |
| Basic認証 | ID・パスワードによる閲覧制限 |
| IP制限 | 特定のIPアドレスのみ許可・拒否 |
| カスタム404ページ | オリジナルのエラーページ表示 |
| ファイル一覧の非表示 | ディレクトリ内部の丸見え防止 |
301リダイレクト
旧URLへのアクセスを新URLへ自動転送します。
サイト移転やリニューアルでURLが変わるとき、301リダイレクトを設定すれば検索エンジンの評価を新URLへ引き継げます。
設定しないまま移転すると、旧URLに積み上がった評価はそのまま消えます。
URLの正規化
httpとhttps、wwwのあり・なしは、検索エンジンからは別々のURLとして扱われます。放置すると評価が分散します。
そこで301リダイレクトで1つのURLに統一する作業がURLの正規化です。
SEOの土台に関わる設定なので、サイト公開時に済ませておくべき項目です。
Basic認証
ページを開いたときにIDとパスワードの入力を求める認証です。
公開前のテストサイトを関係者だけで確認する用途が典型で、専用の会員システムを組むより手軽に閲覧制限をかけられます。
IP制限
接続元のIPアドレスで閲覧を制御します。社内IPだけに管理画面を開放する、攻撃元のIPを遮断する、といった使い方です。
Basic認証と違って入力の手間がない点が利点です。
カスタム404エラーページ
存在しないURLへのアクセスに対して、自作のエラーページを表示します。
サーバー標準の素っ気ない「Not Found」画面よりも、トップページや検索窓への導線を置いたページの方が離脱を防げます。
ファイル一覧の非表示
index.htmlがないディレクトリにアクセスされると、サーバー設定によっては中のファイル一覧がそのまま表示されます。
Options -Indexes の1行でこれを禁止できます。入れておいて損のないセキュリティ設定です。
.htaccessの有効範囲と設置場所

.htaccessの設定は「置いたディレクトリとその下の階層すべて」に適用されます。
サイト全体に効かせたいならルートディレクトリ(public_htmlなど最上位)へ、特定のフォルダだけに効かせたいならそのフォルダの中に置きます。
上下の階層に複数の.htaccessがある場合は、より深い階層のファイルが優先されます。
ルートに置いた設定を、特定のディレクトリだけ別の.htaccessで上書きする使い方ができるわけです。
htaccessの書き方|4つの基本ルール
書き方のルール自体はシンプルですが、1つでも外すと動きません。
ファイルを作る前に次の4点を押さえてください。
1.ファイル名は「.htaccess」。.txtなどの拡張子は付けない
2.文字コードはUTF-8(BOMなし)
3.改行コードはLF
4.ファイルの最終行の後に改行(空行)を入れる
BOM(ファイル先頭に付く不可視の文字コード情報)が付いていると正常に動作しません。Windowsのメモ帳はBOMやCRLF改行が混入しやすいため、VS CodeやサクラエディタなどBOMと改行コードを指定できるエディタを使ってください。
行頭に「#」を付けるとコメント行になり、動作に影響しません。設定の意図や変更日をメモしておくと、後から見返すときに助かります。
# 2026-10 サイト移転のためのリダイレクト
Redirect permanent /old/ https://example.com/new/
【目的別】htaccessの書き方と記述例
ここからはコピーして使える記述例です。example.comの部分は自分のドメインに書き換えてください。
サイト全体を301リダイレクトする
ドメイン変更で、新旧サイトのディレクトリ構造が同じ場合は1行で済みます。
Redirect permanent / https://new-example.com/
ページ単位・ディレクトリ単位でリダイレクトする
mod_rewrite(URL書き換え用のApacheモジュール)を使います。
RewriteEngine On
# ページ単位: old.html から new.html へ
RewriteRule ^old\.html$ /new.html [R=301,L]
# ディレクトリ単位: /blog/ から /column/ へ
RewriteRule ^blog/(.*)$ /column/$1 [R=301,L]
R=301が「恒久的な転送」、Lが「この行でルール適用を終える」という意味です。一時的な転送なら301を302に変えます。
URLを正規化する(https・wwwなしに統一)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
</IfModule>
CloudflareなどのCDNやロードバランサーを経由している環境では、この書き方だと無限ループになる場合があります。
その場合は RewriteCond %{HTTP:X-Forwarded-Proto} !https を条件に使ってください。
Basic認証をかける
.htaccessと、ID・パスワードを記録する.htpasswdの2ファイルが必要です。
AuthType Basic
AuthName "Please enter your ID and password"
AuthUserFile /home/ユーザー名/example.com/.htpasswd
require valid-user
.htpasswdには「ユーザー名:暗号化したパスワード」を1行ずつ書きます。パスワードは平文ではなく、htpasswdコマンドか暗号化ツールで生成したものを使ってください。
AuthUserFileはサーバー内のフルパスで指定します。
パスはレンタルサーバーの管理画面などで確認できます。
特定のIPアドレスを許可・拒否する
Apacheのバージョンで書き方が変わります。2.4以降は次のとおりです。
# 特定IPのみ許可(社内限定公開など)
Require ip 203.0.113.5
# 特定IPのみ拒否(攻撃元の遮断など)
<RequireAll>
Require all granted
Require not ip 192.0.2.1
</RequireAll>
古い解説記事に出てくるOrder、Deny from、Allow fromはApache 2.2以前の書き方です。
2.4系では非推奨なので、これから書くならRequire系に統一してください。
カスタム404ページとファイル一覧の禁止
# オリジナルの404ページを表示
ErrorDocument 404 /404.html
# ディレクトリのファイル一覧を非表示
Options -Indexes
.htaccessの設置手順

手順は「作る」「アップロードする」の2段階です。
手順1:ファイルを作成する
テキストエディタで記述を済ませ、基本ルール(UTF-8 BOMなし・LF・最終行の改行)に沿って保存します。
Windowsでは「.」で始まるファイル名が作れないことがあるため、いったん「htaccess.txt」で保存し、アップロード後にリネームするのが確実です。
手順2:サーバーにアップロードする
FTPソフト(FileZillaなど)か、レンタルサーバーのファイルマネージャーで対象ディレクトリにアップロードします。
FTPの転送モードはASCIIまたは自動を選びます。
アップロード後にファイル名を「.htaccess」へ変更したら完了です。
設定は即座に反映されます。サーバーの再起動は不要です。
WordPressサイトでの注意点
WordPressのルートディレクトリには、パーマリンク用の.htaccessが最初から存在します。追記する場合は「# BEGIN WordPress」から「# END WordPress」までのブロックの外側に書いてください。ブロック内はWordPressが自動で書き換えるため、追記した内容が消えることがあります。
ファイルが見当たらない場合は、FTPソフトの隠しファイル表示を有効にするか、管理画面の「設定 > パーマリンク」で変更を保存すると自動生成されます。
.htaccessが反映されない・エラーになるときの確認ポイント
編集前にバックアップを取ることが大前提です。そのうえで、動かないときは次を上から順に確認してください。
1.ファイル名が「htaccess.txt」のままになっていないか
2.文字コードがBOM付きになっていないか、改行コードがCRLFになっていないか
3.全角スペースが混ざっていないか(記述内は半角英数のみ)
4.最終行の後に改行が入っているか
5.サーバー側でAllowOverrideが有効か(VPSは要確認)
6.RewriteRuleを使う場合、mod_rewriteが有効か
500エラー(Internal Server Error)が出た場合は、ほぼ記述ミスです。
まず直前のバックアップに戻してサイトを復旧させてから、原因を探してください。原因の大半は1〜4、つまり設定の中身ではなくファイル形式の問題です。
まとめ
.htaccessは、Apache環境のWebサーバーをディレクトリ単位で制御する設定ファイルです。301リダイレクト、URLの正規化、Basic認証、IP制限あたりが実務での主な用途で、レンタルサーバーでのサイト運用では避けて通れません。
書き方そのものは数行で済みます。つまずくのはファイル名・文字コード・改行コードといった形式面なので、4つの基本ルールを守り、編集前のバックアップを習慣にしてください。この2点さえ押さえれば、.htaccessは怖いファイルではありません。
.htaccessに関するよくある質問
.htaccessの読み方は?
「ドット・エイチティー・アクセス」と読みます。Hypertext Accessの略で、単に「エイチティーアクセス」と呼ばれることもあります。
.htaccessはどこに置けばいいですか?
設定を効かせたいディレクトリの直下です。サイト全体に適用するならルートディレクトリ(public_htmlなど)に置きます。
WordPressで.htaccessが見つかりません。なぜですか?
隠しファイルになっているためです。FTPソフトの「隠しファイルを表示」を有効にしてください。それでも無い場合は、管理画面の「設定 > パーマリンク」で変更を保存すると自動生成されます。
記述を間違えるとどうなりますか?
多くの場合500エラーになり、サイト全体が表示されなくなります。編集前のバックアップに戻せば復旧できるので、必ずバックアップを取ってから編集してください。
Nginxのサーバーでも使えますか?
使えません。.htaccessはApache(およびLiteSpeedなどの互換サーバー)専用です。Nginxでは同等の設定をサーバー側の設定ファイルに記述する必要があります。
複数の.htaccessを置いた場合、どちらが優先されますか?
より深い階層に置いたファイルの設定が優先されます。ルートの設定を特定のディレクトリだけ上書きしたいときに使えます。

