本サイトは広告(アフィリエイトリンク・Google AdSense)を含みます。

.htaccessでリダイレクト・Basic認証・IP制限

Apache の .htaccess で最もよく書く、301 リダイレクト、Basic認証、IP制限の書き方を、Apache 2.4 の記法で説明します。500 エラーや転送ループなど、よくある書き間違いを症状から探せるようにまとめています。

.htaccess が効く範囲

.htaccess は、Apache 系サーバーでディレクトリ単位の設定をファイルとして置く仕組みです。置いたディレクトリとその配下に効き、サーバーの再起動なしに即座に反映されます。エックスサーバーやロリポップなどの共用レンタルサーバーで利用者が触れる設定の大半はこのファイルです。nginx だけで動くサーバーでは読まれません。

便利な反面、1文字の誤りで 500 Internal Server Error になり、サイト全体が表示されなくなります。編集の前に必ず元のファイルを控え、変更後はすぐにトップページと下層ページの両方を開いて確かめてください。

リダイレクト

最もよく書くのが転送です。ページを移動した場合は、検索エンジンに「恒久的に移った」と伝える 301 を使います。

Redirect 301 /old-page.html /new-page/

ディレクトリ単位やドメイン全体の転送、http から https への統一は mod_rewrite を使います。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

[R=301,L] の L は「この規則で処理を終える」という指定で、付け忘れると後続の規則にも当たり、転送が二重になることがあります。https 化の転送は canonical や HSTS との組み合わせが要るため、http から https への転送で詳しく扱っています。

Basic認証

公開前のテストサイトや、取引先だけに見せるページをパスワードで保護する方法です。パスワードは平文ではなく、ハッシュ化した .htpasswd ファイルに置き、そのファイルは公開ディレクトリの外に置くのが原則です。

AuthType Basic
AuthName "Members Only"
AuthUserFile /home/example/.htpasswd
Require valid-user

AuthUserFile は相対パスではなく、サーバー上の絶対パスで書きます。パスが違うと、正しいパスワードを入れても通らないのではなく、500 エラーになります。Basic認証はパスワードが Base64 で送られるだけなので、https でない回線では盗聴できます。https 化が前提です。

IP制限

社内や自宅の固定 IP からだけ管理画面に入れるようにする設定です。Apache 2.4 では Require を使います。

<Files wp-login.php>
Require ip 203.0.113.0/24
Require ip 2001:db8::/32
</Files>

古い解説にある Order deny,allow と Deny from all は Apache 2.2 の書き方で、2.4 でも互換モジュールがあれば動きますが、2.4 の書き方と混在させると意図しない結果になります。/24 のような CIDR 表記は、IPアドレス・CIDR計算で含まれる範囲を確かめてから書いてください。スマートフォンの回線や多くの家庭用回線は IP が変わるため、IP制限は固定 IP を持つ環境でだけ成り立ちます。

よくある書き間違い

症状から原因を探せるように、頻度の高いものを挙げます。

500 エラーになる場合は、ディレクティブ名の綴り、閉じ忘れた <IfModule> や <Files>、全角スペースの混入、Windows のメモ帳で保存したときの BOM(ファイル先頭の見えない文字)が典型です。転送がループする場合は、RewriteCond の条件が転送後にも成立しています。CDN やロードバランサーを経由していると %{HTTPS} が常に off になるため、%{HTTP:X-Forwarded-Proto} で判定します。Basic認証が一部のページだけ効かない場合は、下層ディレクトリに別の .htaccess があって設定を上書きしています。

手で書く前に、.htaccess生成で項目を選んで雛形を出し、必要な部分だけ直すと、綴りと閉じ忘れの誤りを減らせます。

確認に使えるツール

最終更新: 2026-10-24 / 監修: 飛田 宏紀(情報処理安全確保支援士(登録セキスペ))