web-dev-qa-db-ja.com

(nginx rewrite)動的URLの末尾にWordを追加| WordがURLで複数回繰り返されています

私は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は複数回追加されます。

これに対する解決策はありますか?何が間違っていますか?

2
Nintendo64
rewrite ^/picture(.*) /picture$1specialword permanent;

(.*)はリダイレクトされたURLと一致するため、これによりリダイレクトループが発生するようです。

正規表現をより具体的にし、必要なものだけをチェックすることで、このループを回避できます。数。次のようなものを試してください:

rewrite ^/picture/(\d+)$ /picture/$1-specialword permanent;

内部リダイレクトではなく、外部リダイレクト(アドレスバーのURLを変更する必要がある)が必要だと思いますか?

permanent(301)リダイレクトはブラウザによってキャッシュされるため、テストの前にブラウザのキャッシュをクリアする必要があります。

1
MrWhite