特定の拡張子を持つファイルを一致させるために、これを使用できます:
場所〜。*。(php | jsp | cgi | pl | py)?$ {}
そして、すべてが期待どおりに機能します...
しかし、拡張子のないファイルがある場合、「場所」ブロックでそれらをどのように一致させることができますか?!
正規表現.*.(php|jsp|cgi|pl|py)?$
は、任意の数の文字(.*
)とそれに続く別の文字(.
)、およびリストされた拡張子の0回または1回の出現に一致します(...)?
。ここで?
確認できるように、この正規表現は、拡張子のないファイルとすでに一致しているはずです。
コメントで明確にした後に更新する
正規表現を使用できます。[^.]+(?!(php|jsp|cgi|pl|py))$
これは、ピリオドであってはならず、リストされた拡張子が後に続かない複数の文字に一致することを意味します。
2回目の更新
場所のドキュメントによると:
正規表現に一致しないための構文はありません。代わりに、ターゲットの正規表現に一致し、空のブロックを割り当てます
したがって、拡張子を持つすべてのファイルを照合し、空のブロックを割り当てる必要があります。これは元の正規表現に似ていますが、がなく?
、拡張子の前にドットをエスケープする方がよいでしょう。それ以外の場合は、任意の文字を意味します。
location ~ .*\..+$ {}