古いMagentoショップシステムのリンク構造を最適化したい。これまで、静的ページを生成するときに、対応するパスに.htmlサフィックスが追加されていました。以前の問題により、サフィックスが2つ付いたパスも存在していました(例:.html.html)。サフィックスの使用を無効にし、サフィックスが2つあるすべてのパスをデータベースから削除したので、古いURLから新しいURLへの自動リダイレクトを設定します。
既存のハイパーリンクと検索エンジンエントリを保持するために、Nginxが.htmlまたは.html.htmlサフィックスを持つページのすべてのリクエストを新しいパスにリダイレクトするようにします。
リクエスト先:
example.org/banana.html
example.org/banana.html.html
リダイレクトする必要があります:
example.org/banana
だから実際の私の最善の推測は:
location / {
rewrite ^(.*?)\.html(\.html)?$ $1 permanent;
try_files $uri $uri.html $uri.html.html $uri/ =404;
}
目標を達成するにはどうすればよいですか?また、nginx構成に追加する必要がある書き換えルールは何ですか?
location
ブロック内で使用するtry_files
ステートメントは1つだけです。 file用語は必要に応じて追加できます。静的ファイルに直接一致するURIに一致する$uri
用語を含めます(例:.css
および.js
)。 index
ディレクティブを使用する場合は、$uri/
用語を含めます。
例えば:
try_files $uri $uri.html $uri.html.html $uri/ =404;
詳細については、 このドキュメント を参照してください。
rewrite
ステートメントは、最初のステートメントが常に2番目のステートメント用のURIと一致するため、間違った方法です。また、リライトは/
変数の先頭の$1
をキャプチャしているため、/$1
を使用すると、先頭の/
が追加されます。
次に、両方の正規表現を1つのステートメントに結合することもできます。
rewrite ^(.*?)\.html(\.html)?$ $1 permanent;