.htaccessの基本設定(初心者向け)

.htaccess(エイチティーアクセス)は、Apacheサーバーで利用される設定ファイルです。

ホームページを運用していると、 「http でアクセスされたら https に飛ばしたい」 「wwwあり / なし を統一したい」 「特定の場所だけアクセス制限をかけたい」 といった場面がよくあります。

このような設定を、ディレクトリ単位で手軽に行えるのが .htaccess です。

このページでは、.htaccess の基本的な役割と、 ホームページ運用でよく使われる代表的な設定を初心者向けに分かりやすく解説します。

.htaccessとは

.htaccess は、Apacheサーバーの動作を一部変更するための設定ファイルです。

通常、Apache全体の設定はサーバー管理者が変更するものですが、 .htaccess はホームページ領域に設置することで、 そのディレクトリ配下だけに設定を適用できます。

ファイル名は次のように、ドットから始まります。

.htaccess

ドットで始まるファイルは「隠しファイル」として扱われることがあり、 FTPソフトやSFTPソフトによっては表示設定を変更しないと見えない場合があります。

すでに .htaccess が設置されている場所に新しい内容を追加する場合は、 既存の設定を消してしまわないようご注意ください。

.htaccessでできること

.htaccess では、主に次のような設定が行えます。

特にホームページ運用で利用頻度が高いのは、 HTTPSリダイレクトとURLの統一です。

設置場所について

一般的には、ホームページの公開ディレクトリに .htaccess を設置します。

/public_html/.htaccess

この場所に設置した場合、そのディレクトリ配下のファイルやフォルダに設定が適用されます。

また、サブディレクトリごとに別の .htaccess を設置して、 その範囲だけ異なる設定を行うことも可能です。

HTTPSへリダイレクトする

現在はセキュリティ保護のため、ホームページを HTTPS で公開することが一般的です。

HTTPのままアクセスされた場合でも、 .htaccess を使えば HTTPS へ自動的に転送できます。

代表的な設定例は次の通りです。

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

この設定では、HTTPSではないアクセスがあった場合に、 同じURLの HTTPS版へ 301リダイレクトします。

✔ 推奨
ホームページを公開する場合は、HTTP と HTTPS の両方をそのまま使わせるのではなく、 HTTPS へ統一する設定をおすすめします。

301 は「恒久的な転送」を意味します。 検索エンジンにも正規URLとして認識されやすくなるため、 SEOの面でもURL統一は重要です。

wwwあり / なし を統一する

同じホームページでも、次のように複数のURLで表示できる場合があります。

https://example.com
https://www.example.com

この状態を放置すると、利用者にとっても分かりにくく、 検索エンジンの評価が分散する可能性があります。

そのため、どちらか一方に統一する運用が一般的です。

たとえば「wwwあり」に統一する例は次の通りです。

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

逆に「wwwなし」に統一したい場合は、条件と転送先を反対にします。

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

実際に設置する際は、example.com の部分をご利用のドメイン名に書き換えてください。

HTTPSとwww統一を同時に行う場合

ホームページによっては、 「http://example.com」 「http://www.example.com」 「https://example.com」 「https://www.example.com」 のように複数のパターンでアクセスできることがあります。

この場合は、最終的な正規URLを1つ決めて、 そこへまとめて転送するのが分かりやすい運用です。

たとえば「https://www.example.com」に統一する例です。

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

これにより、http / https、wwwあり / なし の違いに関係なく、 最終的に1つのURLへ統一できます。

特定IPからのみアクセス許可する

会員専用ページや管理用ディレクトリなど、 特定のIPアドレスからのみアクセスを許可したい場合があります。

その場合は、次のような設定を行います。

Order deny,allow
Deny from all
Allow from 123.456.78.9

この設定では、まず全体を拒否し、 指定したIPアドレスのみアクセスを許可します。

複数のIPを許可したい場合は、Allow from を追加します。

Order deny,allow
Deny from all
Allow from 123.456.78.9
Allow from 234.567.89.10

固定IPではない回線をご利用の場合、IPアドレスが変わることがあります。 アクセスできなくなった場合は、現在のIPアドレスをご確認ください。

特定ファイルへの直接アクセスを禁止する

設定ファイルや内部用ファイルなど、 ブラウザから直接開かれたくないファイルがある場合は、 .htaccess でアクセス制御できます。

たとえば config.php を保護する例です。

<Files config.php>
Order allow,deny
Deny from all
</Files>

この設定により、config.php にブラウザで直接アクセスしても表示されなくなります。

複数の重要ファイルがある場合は、それぞれに応じて設定を追加してください。

特定の拡張子を保護したい場合

バックアップファイルや設定メモなど、 Web公開不要のファイルを置いてしまうことがあります。

たとえば .txt や .bak など、 公開したくないファイルはアップロードしないのが基本ですが、 必要に応じてアクセス禁止設定を加えることもできます。

<FilesMatch "\.(bak|log|txt)$">
Order allow,deny
Deny from all
</FilesMatch>

ただし、このようなファイルは可能であれば公開領域に置かないことをおすすめします。

Basic認証と .htaccess

特定のディレクトリにIDとパスワードをかけたい場合にも、 .htaccess が利用されます。

Basic認証の設定では、通常 .htaccess と .htpasswd を組み合わせます。

例としては次のような内容になります。

AuthType Basic
AuthName "Member Only"
AuthUserFile /home/username/.htpasswd
Require valid-user

この設定を行うと、対象ディレクトリにアクセスした際に 認証画面が表示されます。

なお、.htpasswd の設置場所や記述方法を誤ると、 認証が正常に動作しない場合があります。

よくあるエラーと原因

.htaccess は便利な反面、記述ミスがあると ホームページが表示されなくなることがあります。

特に多いのは、記述ミスによる 500 Internal Server Error です。

設定変更後は、必ずホームページを実際に開いて動作確認を行ってください。
エラーになった場合は、直前に追加した記述をいったん外して原因を切り分けると確認しやすくなります。

編集時の注意点

.htaccess を編集する際は、次の点にご注意ください。

いきなり複数の設定をまとめて追加すると、 どこが原因でエラーになったのか分かりにくくなります。

そのため、1つずつ追加して確認する方法がおすすめです。

ホームページ運用でよく使う設定例

初心者の方がまず覚えておくと役立つのは、次の3つです。

この3つだけでも、ホームページ運用の基本としてかなり実用的です。

✔ まずはここから
初めて .htaccess を触る場合は、 最初に HTTPS 統一だけ設定し、問題なく動作することを確認してから 他の設定を追加すると分かりやすいです。

関連ページ

あわせて次のサポートページもご確認ください。

WISNETでは用途に合わせて2つのレンタルサーバープランをご用意しています。

サポート情報

サポート情報トップ