リストされた場所と等しくないものに応答するNginxでlocation
条件を設定するにはどうすればよいですか?
私は試した:
location !~/(dir1|file2\.php) {
rewrite ^/(.*) http://example.com/$1 permanent;
}
ただし、リダイレクトはトリガーされません。サーバー構成の残りのルールを使用して、要求されたURIを処理するだけです。
正規表現と一致しない構文はありません。代わりに、ターゲットの正規表現に一致し、空のブロックを割り当ててから、location /を使用して他のものに一致させます
したがって、次のように定義できます
location ~ (dir1|file2\.php) {
# empty
}
location / {
rewrite ^/(.*) http://example.com/$1 permanent;
}
私は同じものを探していました。そして、この解決策を見つけました。
負の正規表現アサーションを使用:
location ~ ^/(?!(favicon\.ico|resources|robots\.txt)) {
.... # your stuff
}
ソース 場所の否定正規表現
正規表現の説明:
URLが次のパスのいずれとも一致しない場合
example.com/favicon.ico
example.com/resources
example.com/robots.txt
次に、そのロケーションブロック内に移動して処理します。