.htaccess とは?
.htaccess
ファイル (ハイパーテキスト アクセス ファイルとしても知られています) は Apache で実行する Web サーバーに対して特定の構成を定義するために使用されます。 この設定ファイルは、それが格納されているディレクトリと、そのディレクトリ内のすべてのサブディレクトリに影響を与えます。 例えば、.htaccess
ファイルがルートディレクトリ内にある場合、サイト全体に影響を及ぼします。
また、WordPress や Drupal などの一部の CMS プラットフォームには .htaccess
ファイルがあり、そのサイトのみに適用される特定の設定を指定することが可能になっています。 .htaccess
ファイルは、次のようなさまざまなことを実現するために使用できます。
- リダイレクトの実行
- エラーページのカスタマイズ
- IP に基づくユーザーの制限
- MIME タイプの追加
- HTTP ヘッダーの設定
- 特定のフォルダをパスワード保護
.htaccess
このファイルはさらに多くのことに使用することができます。 しかし、上記のリストは、.htaccess
の最も一般的な使用方法の一つです。
.htaccess の例
.htaccess
ファイルで達成できる設定の可能性は、膨大な量になります。 以下のリストは、より一般的に使用される例の一部です。
Redirect users to a specific error page
特定のファイルまたはページが返すステータス コードに基づいて、ユーザーをカスタム エラー ページにリダイレクトすることができます。 以下の例は、使用可能ないくつかのバリエーションを示しています。
ErrorDocument 403 /forbidden.htmlErrorDocument 404 /notfound.htmlErrorDocument 500 /servererror.html
Adding a custom header and value
Custom HTTP headers can also be added via the .htaccess
ファイルを使用して、カスタム HTTP ヘッダーを追加することができます。 いくつかの構文オプションがあります。例えば、set
は同じ名前を持つ以前のヘッダを置き換え、add
は同じ名前のヘッダが存在する場合でもヘッダを追加します。
Header set X-Custom "Custom Value"
上記の例では、X-Custom
テキストは HTTP レスポンスで返される HTTP ヘッダーに対応し、Custom Value
テキストはこの特定のヘッダーの値に対応します。
IP に基づくユーザーのブロック
セキュリティ目的のために、.htaccess
ファイル内で IP に基づくユーザーをブロックすることが可能です。 下の例では、ブロックされるIPは2つです。 また、IP アドレスの最後の桁を含めないようにすることもでき、その場合、最初の 3 桁を含むすべての IP がブロックされます。
order allow,denydeny from 255.x.x.xdeny from 123.x.x.xallow from all
Blocking referrers (hotlink protection)
ホットリンク保護としても知られるリファラーのブロックは、特定のリファラーがウェブサイトの資産を参照するのをブロックして、帯域を奪うために使用する手法です。 以下のスニペットを使用して、どのドメインがあなたのコンテンツを参照することを許可されないか、したがって、それらは 403 Forbidden
エラーを受け取るかを定義します。 KeyCDNゾーンにホットリンク保護を実装する方法については、ゾーンリファラーガイドをご覧ください。
MIMEタイプの追加
MIMEタイプは、特定のファイル拡張子が参照するものを定義します。 したがって、参照するファイルの種類を Web サーバーに知らせるために、.htaccess
ファイルにこれを設定することが必要になることがあります。
AddType image/gif .gif .GIF
Leveraging browser caching
.htaccess
ファイルは、ブラウザのキャッシュを利用して、ウェブサイトのパフォーマンスを向上させるために使用することも可能です。 各ファイル タイプは、特定の有効期限値で定義できます。 ファイル タイプのカスタム リストを定義して、それぞれの有効期限値を変更できますが、次のスニペットが良い出発点となります。
## EXPIRES CACHING ##<IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType text/html "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType text/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 1 month"</IfModule>## EXPIRES CACHING ##
Enabling Gzip
Gzip を原始サーバーで有効にすると、資産が圧縮されてより速く配信されるのでパフォーマンスを改善するのに役立ちます。 Gzip を有効にする MIME タイプのリストを独自に定義することができますが、以下の例が出発点として適しています。 Gzip の利点とその動作の詳細については、Gzip 圧縮の有効化に関する記事を参照してください。
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml</IfModule>
Denying HTTP request methods
さまざまな結果を得るために使用される HTTP 要求メソッドがいくつか存在します。
RewriteCond %{REQUEST_METHOD} !^(HEAD|OPTIONS|POST|PUT)RewriteRule .* -
301 リダイレクトの実行
移動したページに対して 301
リダイレクトを実行する必要がある場合、これは .htaccess
で簡単に行うことができます。 最初の URL (古いリンク) を取得して、2 番目の URL (新しいリンク) にリダイレクトします。
Redirect 301 https://yourwebsite.com/old-page https://yourwebsite.com/new-page
Enabling CORS
CORSを有効にすることは、さまざまなオリジン間で静的資産を配信するために極めて重要です。 すべてのオリジンがリソースを共有できるようにするには、次のスニペットを .htaccess
ファイルに追加します。 これを有効にしないと、オリジンが他のオリジンからリソースを要求している場合、CORS エラーが発生します。 CORS の詳細については、CORS の使用方法の記事を参照してください。
<IfModule mod_headers.c> <FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css|js|gif|png|jpe?g|svg|svgz|ico|webp)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch></IfModule>
上記の .htaccess
の例は、.htaccess
の使用にまだ慣れていないが、特定の Web サーバー設定を実行したい場合の出発点となるものです。 .htaccess
ファイルは一連のタスクを実行する能力を持ち、あなたのウェブサイトのニーズに合わせてかなり柔軟に対応できます。 これらの .htaccess
の例は素晴らしい出発点ですが、より高度な .htaccess
設定を行いたいと思うかもしれません。 このトピックの詳細については、AskApache の .htaccess
ファイルガイドの記事
を参照してください。