Nginx で書き換えルールを作成する方法

NGINX 書き換えルールは、Web サーバー上の URL リクエストを変更および管理するための強力な方法を提供します。これらのルールは、URL のリダイレクト、URL 構造の変更、SEO の改善に不可欠です。書き換えルールを活用することで、ユーザーと検索エンジンがコンテンツに効率的にアクセスし、整理されたクリーンな URL 構造を維持できるようになります。書き換えルールをマスターすると、Web サーバーの機能と柔軟性が向上し、全体的なユーザー エクスペリエンスが向上します。

このガイドでは、NGINX で書き換えルールを作成する方法について説明し、URL 変更を効果的に処理するようにサーバーを構成するのに役立つ明確な例と手順を示します。

NGINX 書き換えルール: Return ディレクティブ

NGINXは return ディレクティブは、サーバーの応答を管理するための強力なツールです。主に、クライアントを別の URL にリダイレクトしたり、特定のステータス コードを送信したりするために使用されます。このディレクティブは、特に Web サイトを移動または再構築するときに、トラフィックのリダイレクトを簡素化します。これは、SEO と移行中のユーザー エクスペリエンスの維持に不可欠です。その適用方法を理解するために、ユニークな例を見てみましょう。

例: ユーザーを古いページから新しいページにリダイレクトしたいとします。NGINX設定ファイルでは、 return 指令は次のようになります。

server {
    listen 80;
    server_name oldsite.com;
    return 301 http://newsite.com$request_uri;
}

この例では、oldsite.com へのすべてのリクエストは、リクエスト URI を保持したまま、newsite.com に永続的にリダイレクトされます。301 ステータス コードは永続的なリダイレクトを示し、検索エンジンにインデックスを更新するように通知します。

NGINX 書き換えルール: 書き換えディレクティブ

NGINX 書き換えディレクティブは、さらに処理を進める前に、さまざまな方法でリクエスト URI を変更するために使用されます。これは return ディレクティブよりも汎用性が高く、条件に基づいて複雑な URL 操作を可能にします。この機能は、SEO に適した URL を作成し、レガシー リンクを管理するために不可欠です。

例: SEO を向上させるために、動的な URL を静的な URL に変換する必要があるとします。次のように書き換えディレクティブを使用できます。

server {
    listen 80;
    server_name example.com;
    location /products {
        rewrite ^/products/([0-9]+)/([0-9]+)$ /product?id=$1&page=$2 last;
    }
}

このシナリオでは、example.com/products/123/2 のような URL は、内部的に example.com/product?id=123&page=2 に書き換えられます。最後のフラグは、書き換えプロセスを停止し、新しい URI を再評価する必要があることを示しています。

NGINX 書き換えルールの例

NGINX での HTTPS 書き換えルールの実装

HTTPS 経由の安全な接続を確保することは、データ セキュリティにとって非常に重要です。NGINX 書き換えディレクティブは、すべての HTTP トラフィックを HTTPS にリダイレクトし、転送中のデータのセキュリティを強化できます。

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

この例では、example.com への HTTP リクエストが HTTPS にリダイレクトされ、暗号化された通信が保証されます。

URL の合理化: NGINX 書き換えルールにおける重複スラッシュの削除

場合によっては、URL に重複したスラッシュが含まれており、混乱やエラーが発生することがあります。NGINX の rewrite ディレクティブは、二重スラッシュを含む URL を単一のスラッシュに変換することで、これを効率的に処理します。

server {
    server_name example.com;
    if ($request_uri ~* "\/\/") {
        rewrite ^/(.*)/$ /$1 permanent;
    }
}

このルールは、冗長なスラッシュを削除して URL を合理化します。

ディレクトリリダイレクト: NGINX 書き換えルールの実践

リソースを再編成または移動する場合、ディレクトリ全体を効率的にリダイレクトする必要があることがよくあります。NGINX は、書き換えルールを通じてこれを容易にします。

location ^~ /old-directory/ {
    rewrite ^/old-directory/(.*)$ /new-directory/$1 permanent;
}

このコマンドは、すべてのリクエストを /old-directory/ から /new-directory/ にリダイレクトします。

NGINX の書き換えルールを使用したクエリ文字列操作

クエリ文字列に基づいて URL を変更することは、サイトの再設計時に特に役立ちます。NGINX 書き換えルールを使用すると、これらのパラメータに基づいて URL を動的に再構築できます。

if ($args ~ "^id=(.*)&lang=(.*)") {
    set $id $1;
    set $lang $2;
    rewrite ^/page.php$ /page/$lang/$id? permanent;
}

ここで、書き換えルールは複雑なクエリ文字列をより合理化された URL に変換します。

統一された URL の確保: NGINX 書き換えルールの末尾のスラッシュ

末尾のスラッシュなどの URL 構造の統一性は、サイトの一貫性と SEO にとって重要です。

rewrite ^([^.]*[^/])$ $1/ permanent;

このルールにより、すべての URL がスラッシュで終了し、標準化された形式が維持されます。

メソッドベースのリダイレクト: NGINX での書き換えルールの採用

NGINX では、POST などの特定のリクエスト メソッドに基づいてリダイレクトが可能であり、これはフォームの送信を安全に処理するために非常に重要です。

if ($request_method = POST ) {
    return 301 https://example.com$request_uri;
}

このコマンドは、すべての POST リクエストを HTTPS URL にリダイレクトします。

NGINX Rewrite Rules によるイメージの保護

画像への不正な直接リンクを防止することで、サーバーのリソースを保護します。

location ~ .(gif|png|jpe?g)$ {
    valid_referers none blocked ~.google. ~.bing. ~.yahoo. example.com *.example.com;
    if ($invalid_referer) {
        rewrite ^/images/(.*)$ /stop-hotlinking.$1 last;
    }
}

この設定により、無効なリファラーを持つリクエストがリダイレクトされ、ホットリンクが効果的にブロックされます。

一貫性を保つために小文字の URL を強制する

サイト全体で小文字の URL を維持すると、一貫性が向上し、混乱を防ぐことができます。

location ~ [A-Z] {
    rewrite ^(.*)$ $scheme://$host$1 lowercase;
}

このコマンドは、大文字の URL 要素を小文字に変換します。

URL構造の変更の処理

ウェブサイトの更新時には、トラフィックを失ったりユーザー エクスペリエンスを損なったりすることなく、新しい URL 構造に適応することが重要です。

server {
    listen 80;
    server_name example.com;
    
    location ~* ^/oldpath/(.*) {
        rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
    }
}

ユーザーと検索エンジンを古い URL から新しい URL にリダイレクトします。

CMS プラットフォーム用のクリーンな URL の作成

クエリ文字列に依存する CMS プラットフォームの場合、NGINX 書き換えルールにより、よりクリーンで SEO に適した URL を作成できます。

location / {
    try_files $uri $uri/ @extensionless-php;
    index index.html index.htm index.php;
}

location ~ \.php$ {
    try_files $uri =404;
}

location @extensionless-php {
    rewrite ^(/[^.]*[^/])$ $1.php last;
}

この設定により、URL がより読みやすい形式に変換され、SEO パフォーマンスが向上する可能性があります。

結論

NGINX で書き換えルールを作成して構成することで、URL 管理を最適化し、SEO を改善し、シームレスなユーザー エクスペリエンスを確保できます。書き換えルールを定期的に確認してテストし、期待どおりに機能することを確認し、必要に応じて調整してください。NGINX の書き換えルールをマスターすると、NGINX のパワーを最大限に活用して、より動的で応答性の高い Web サーバーを実現できます。

Joshua James

コメントを残す