この記事では、SEO を強化するために不可欠な .htaccess ファイルの使用に関する基本原則について説明します。このファイルは、検索エンジンによるページの適切なインデックス作成を保証します。リダイレクトの管理、セキュリティの構成、パフォーマンスの向上の方法を学びます。さらに、このファイルを個別に構成する方法に関するヒントも提供します。
.htaccess が必要な理由
.htaccess ファイルは、Apache サーバー上の Web 開発者にとって一種の「リモート コントロール」として機能します。さまざまなパラメータを調整し、Web サイトの動作を管理するための便利なツールを提供します。サーバーのメイン構成ファイルに直接アクセスできない場合 (たとえば、仮想ホスティングの場合によくあることです)、.htaccess は必要な変更を行うための便利なツールになります。
htaccessは、多くの場合、サイトのルートフォルダまたは特別な設定が必要なフォルダに配置されます。たとえば、WordPressを使用している場合、設定はYoast SEOプラグインを通じて行うことができます。これについては、 robots.txt の設定それ以外の場合は、必要なフォルダーに移動して既存の .htaccess ファイルを編集するか、まだ作成されていない場合は作成するだけで十分です。
.htaccess ファイルの設定
301 リダイレクト htaccess
.htaccess ファイル内の 301 リダイレクトは、Web サイトの永続的なリダイレクトに似ています。これは、ページが新しいアドレスに永続的に配置されていることを検索エンジンとブラウザに通知し、ブックマークとインデックスの更新を提案します。このようなリダイレクトは通常、ページが移動または削除されたときに使用され、検索結果でのランキングを維持し、訪問者を新しい場所にリダイレクトします。
リダイレクトを有効にするには、.htaccess ファイルで対応するコマンドを有効にする必要があります。
RewriteEngine on
その後、最も単純な形式のリダイレクトを設定できます。
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
同様のリダイレクトは、 リダイレクト永続 ディレクティブは次のようになります:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
これらは最も簡単に設定できるリダイレクト方法です。他のより高度なタイプのリダイレクトを使用する設定を考えてみましょう。 mod_rewriteの モジュール:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]
# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>
一時的な再配置を示す 302 リダイレクト .htaccess は、あまり頻繁には使用されません。次に、このような設定の例を示します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
ディレクティブ エラー ドキュメント
この設定により、サイトで HTTP エラーが発生したときにユーザーに表示される内容を制御できます。標準のエラー メッセージの代わりに、訪問者にとってより有益な情報を提供し、何が起こったかを理解できるように独自のページを表示できます。使用するには、次の構文に従うだけです。
ErrorDocument <error_code> <URL_page>
たとえば、
ErrorDocument 404 /errors/not_found.html
つまり、 404 エラーが発生した場合、 /エラー/見つかりません.html が開きます。絶対 URL も同様に指定します。
ErrorDocument 500 http://example.com/errors/server_error.html
この例では、 サーバーエラー.html ページ http://example.com/errors/ の場合 500 エラー。
サイトディレクトリへのアクセスを拒否する
.htaccessファイルにはコマンドがあります すべてから拒否は、Web サーバー上の特定のフォルダーやファイルへのアクセスを拒否するのに役立ちます。これは、データのセキュリティを確保するために、個人情報や重要なファイルをサイト訪問者から隠したい場合に役立ちます。
リスト表示を無効にするには(利用可能なすべてのディレクトリを表示する)、次の行を追加する必要があります。
Options -Indexes
特定のディレクトリへのアクセスをブロックする例は次のようになります。
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
同様に、単一のファイルへのアクセスを拒否することもできます。
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
または、拡張子によるファイルの範囲の場合:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
IPによるアクセスのブロック
.htaccess ファイルで IP によるアクセスをブロックすることは、特定の IP アドレスまたはそのグループによる Web サイトへのアクセスを制限できる方法です。これは、特定の人物や望ましくないボットによるサイトまたはその特定の部分へのアクセスを防止したい場合に役立ちます。
単一の IP アドレスをブロックするには、次のコマンドを使用します。
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
複数のIPアドレスをブロックするには、同様に「から拒否必要なアドレスを「」行に入力します。
IP アドレスの範囲をブロックする場合:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
特定の IP のみにアクセスを許可するには、次のコードを追加します。
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
アクセスを完全に拒否するには、ディレクティブを使用します すべてから拒否マスクでアドレスをブロックする場合は、 11.22から拒否.
ここで、 11.22 IPアドレスは mask.
ユーザーエージェントによる訪問者のブロック
.htaccess ファイルの User-Agent でユーザーをブロックすることは、訪問者が使用するブラウザの情報に基づいて、Web サーバーにアクセスできるユーザーを制御する方法です。User-Agent 文字列には、ユーザーがサーバーとやり取りするために使用するブラウザに関するデータが含まれており、この情報を使用して、特定のユーザーのアクセスを制限できます。
ユーザーエージェントによるブロックの最も一般的な方法は、 mod_rewriteの:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>
この例では:
- RewriteCond %{HTTP_USER_AGENT} は、User-Agent 文字列をチェックするために使用されます。
- ^Bot1、^Bot2、^Bot3 は、ブロックする User-Agent 文字列の例です。NC 修飾子は、比較で大文字と小文字を区別しないことを示します。
- RewriteRule ^.*$ - [F,L] は、RewriteCond 条件のいずれかが満たされた場合にリクエストに適用されます。403 Forbidden ステータス コード (F) を含む応答を送信し、ルールの処理を停止します (L)。
htaccess でのキャッシュ
.htaccess ファイルを使用してキャッシュを設定すると、ユーザーにとってサイトの読み込みが速くなり、サイトの速度が向上します。仕組みは次のとおりです。画像、CSS スタイル、JavaScript スクリプトなどの特定のファイルは、最初の読み込み後にユーザーのブラウザ キャッシュに保存されます。これで、ブラウザは、ユーザーがページにアクセスするたびにサーバーからファイルを再読み込みするのではなく、キャッシュからこれらのファイルを使用できるようになります。これにより、読み込み時間が短縮され、サイトのパフォーマンスが向上します。
例を考えてみましょう:
# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
一方、頻繁に更新されるリソースの場合は、キャッシュを無効にする必要があります。
# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>
サイトパフォーマンスの最適化
その mod_deflate の三脚と mod_gzip Apache のモジュールは、サーバーがユーザーのデバイスに送信する情報を圧縮するのに役立ちます。これにより、ファイルのサイズが小さくなり、ページの読み込みが高速化されます。ただし、これらのモジュールのサポートと構成はサーバーによって異なる場合があることに注意してください。
使用例 mod_deflate モジュール:
<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
の例 mod_gzip:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>
最もよく使用されるディレクティブについて説明しました。ファイルのすべての機能については、 公式ドキュメント.
.htaccess ファイルの機能を確認する方法
.htaccess ファイルがサイト上で機能しているかどうかを確認するには、次の手順を実行します。
- 意図的に .htaccess ファイルを変更してエラーを発生させます。これに応じて、サーバーはエラーを返す必要があります。この方法は、ファイルの操作がサーバー上で一般的に適用されるかどうかを示します。
- 行った特定の変更の機能性を確認します。たとえば、パラメータの 1 つに小さな調整を加え、変更の有無を評価します。
- 変更がサーバーの応答に関連している場合は、ページのステータスコードを確認します。これを行う方法については、以前の記事で説明しました。 HTTP エラー コード: サーバー エラーの完全なリスト.
- サーバー ログを参照してください。.htaccess ファイルの操作に関連するすべてのエラーが表示されます。
- オンライン サービスまたはツールを使用してテストを実施します。
.htaccess ファイルの機能を確認するには、すべての手順を一度に実行する必要はないことを理解することが重要です。リストから最も適切な方法を選択して使用すれば十分です。
結論
.htaccess ファイルの設定は、Apache サーバーを最適化し保護するための重要なステップです。このファイルがリダイレクトの管理、コンテンツの圧縮、セキュリティの確保にどのように役立つかを説明しました。.htaccess の操作をマスターすると、Web サイトのパフォーマンスと機能を向上させる強力なツールを手に入れることができます。