私はNginxの書き換えルールに本当に混乱しています。書き換えルールのスレッドを多数検索して見つけましたが、必要な結果が得られません...
私はこの形式のリンクを持っています:
http://example.com/picture/587
次のように書き換える必要があります。
http://example.com/picture/587-specialword
数値は動的であり、URLからURLに変更されており、Wordの「picture」を含むURLのみが影響を受けます。
だから私はこれらを試しました:
rewrite ^/picture(.*) /picture$1specialword permanent;
rewrite ^(.*)picture(.*)$ $1picture$2specialword;
これは機能しません...そして私はエラーにつながるこの結果を得ています:
http://example.com/picture/587specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword&specialword
したがって、一度追加されたWordは複数回追加されます。
これに対する解決策はありますか?何が間違っていますか?
rewrite ^/picture(.*) /picture$1specialword permanent;
(.*)
はリダイレクトされたURLと一致するため、これによりリダイレクトループが発生するようです。
正規表現をより具体的にし、必要なものだけをチェックすることで、このループを回避できます。数。次のようなものを試してください:
rewrite ^/picture/(\d+)$ /picture/$1-specialword permanent;
内部リダイレクトではなく、外部リダイレクト(アドレスバーのURLを変更する必要がある)が必要だと思いますか?
permanent(301)リダイレクトはブラウザによってキャッシュされるため、テストの前にブラウザのキャッシュをクリアする必要があります。