.htaccessについて

ベーシック認証や、リダイレクト設定を行うのに必要な.htaccess。
Web制作に携わるものであればぜひとも押さえておきたいキーワードですよね。
よく使うものは感覚的に覚えていたり、ネットに落ちてるソースを流用してなんとなく形になっていると思いますが、実際はどんなことができるのかな?って方が多いかと思います。
今回は、その.htaccessで主にできることや設定を中心にまとめてみました。

.htaccessとは

そもそも.htaccessとはという点ですが、Appache(アパッチ)をはじめとした、各種Webサーバを制御する設定ファイルというもの。
HTMLファイルやCSSファイルなどと同じく、ディレクトリ内に設置すると機能します。
ファイル内に、指定の制御に相当するソースを記述することで様々な設定が行えます。

.htaccessファイルの作り方と注意点

.htaccessを作るには、必ずファイル名を「.htaccess」とする必要があるということです。
ソフトウェアや環境によってはファイル名の頭に「.」を付けられない場合があるので、FTPソフトの機能を使い.htaccessファイルにするなどの工夫が必要だったりします。


◆ファイルの頭に「.」を付けられない場合の作成手順まとめ

  1. 分かりやすく「htaccess」と名付ける
  2. 1のファイルをFTPにアップする
  3. 1のファイルをFTPツールを使ってファイル名を「.htaccess」にする

htaccessでできること設定方法

  • リダイレクト設定
  • https転送
  • 404ページ設定
  • wwwありなし設定
  • index.htmlありなし設定
  • デフォルトページ設定
  • ベーシック認証
  • アクセス制限

よく使う「リダイレクト設定」や「404ページ設定」などのUI/UX面で重要なものや「wwwありなし設定」、「index.htmlありなし設定」SEO面で重要な制御もあるので用途、目的を意識して使い分けましょう。

リダイレクト設定

RewriteEngine on
RewriteRule ^■■.html$ https://www.〇〇.com/▲▲.html [L,R=301] ■■→▲▲へのリダイレクト


ページのURLの変更や、ドメインを変えた場合に旧URLから新URLに自動遷移させる制御です。
これにより、ブックマークしているユーザーからのアクセスや、すでに設置されている旧URLのリンクからもアクセスされるためユーザーへの負担を減らせます。

https転送

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

SSL導入後に行う設定です。URLが「http://~」でアクセスしたものを「https://~」に転送してくれます。
フォームに入力した情報などが暗号化されるため、訪問したユーザーは安心してサイトを利用できますね。
また、これも上記リダイレクト設定と同じで、「http://~」と「https://~」の違いで、Googleの検索エンジンがurlを行るページと判別してしまう可能性があるので、SEO対策の目的でも設定しましょう。

404ページ設定

ErrorDocument 404 /error.html
ErrorDocument エラーコード 404ページURL

ブラウザ毎で設定されているデフォルトの簡易なエラーページを、オリジナルのエラーページにリダイレクトさせるものです。
この制御は、あらかじめ作成した404ページを、「.htaccess」でリダイレクトさせるというものです。
サイトのトンマナにあわせた、オリジナルの404ページで細部までのこだわりをアピールしたいですね。

wwwありなし設定

www無し統一
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]


wwwあり統一
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]


SEO面で重要な制御です。
検索エンジンは「www」のあり/なしを基本的に別物と扱ってしまいます。
そのため、この制御を使い「www」のあり/なしを統一し、同じサイトとして扱ってもらうようにします。

index.htmlありなし設定

RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://%{HTTP_HOST}/$1 [R=301,L]


こちらもSEO的に重要な制御です。
現在の検索エンジンの性能から「index.html」があろうがなかろうが、同一ページと判別してもらえるようですが、別々のページとして認識されてしまう場合もあるので、こちらもこの制御を使ってURLを統一するのが望ましいです。

デフォルトページ設定

DirectoryIndex index.php index.html main.html

デフォルトページとなる「index.html」を、「index.php」にトップページ扱いしたい場合に利用する制御です。
「.htaccess」で記述した、ソースの左から順に優先される性質から、「index.php」、「index.html」という並びで両方ある場合は、「index.php」が表示されます。

ベーシック認証

AuthUserFile /home/***/ディレクトリ/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user


sample(ID):パスワード(ツールによって発行)

設定したディレクトリ以下にアクセスした際に、ID/PASSを確認させるダイアログを呼びだすことができます。
ID、PASSを設定する「.htpasswd」がセットで必要で、それを「.htaccess」に紐づけ、確認内容を決定します。
「ベーシック認証」や「.htpasswd」などのキーワードでブラウザで検索し、「.htpasswd」生成ツールでID/PASSを発行して、.htpasswdファイル内に貼り付ければ設定完了です。

アクセス制限

order deny,allow
deny from all
allow from ***.***.**.***


order allow,deny
allow from all
deny from ***.***.**.***


外部からのアクセスを拒否できる設定です。
「***」には、「IPアドレス」または「ホスト名」を記載します。

  1. 1行目「order」にて、許可(allow)と拒否(deny)の判定順を指定
  2. 2行目で、すべて許可(allow)or拒否(deny)を設定
  3. 特定の「IPアドレス」or「ホスト名」の拒否(deny)または許可(allow)を設定

悪質なユーザーや海外からのアクセスを防ぐことができるので、不正ログインやアクセス超過を抑止し、サーバーパフォーマンスの低下を抑えたりできます。

まとめ

今回は「.htaccess」でできる制御の中でも、比較的使用頻度の高いものをピックアップしてまとめてみました。
上記以外にも、HTMLファイルでPHPを動かしたり、サーバーにキャッシュをもたせないなど、様々な制御があります。
ベーシック認証のような目で分かる機能的なものから、リダイレクト設定などのSEO対策にもつながる制御まであります。
「.htaccess」でできることや設定の内容、目的を理解して使いこなし、よりよいサイト作りを目指しましょう。


ベイクロスマーケティングでは、Webサイト制作・ECサイト制作、構築・運用などWebに関することならなんでも受け付けております。
お気軽にご相談ください。
Webサイト制作のサービス内容はこちらから

Written by