web-dev-qa-db-ja.com

Nginxの場所の正規表現が一致しません

以下は私のためにCSSとJSをキャッシュするために働いています:

location ~ "^(.*)\.(min.)?(css|js)$" {
    expires max;
}

結果:

$ curl -I http://mysite.com/test.css
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Jan 2014 18:55:28 GMT
Content-Type: text/css
Content-Length: 19578
Last-Modified: Mon, 13 Jan 2014 18:54:53 GMT
Connection: keep-alive
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
X-Backend: stage01
Accept-Ranges: bytes

10桁のUNIXタイムスタンプを使用してjs/cssのバージョン設定を取得しようとしていますが、次の有効な正規表現との正規表現一致の取得に問題があります。

location ~ "^(.*)([\d]{10})\.(min\.)?(css|js)$" {
    expires max;
}

結果:

$ curl -I http://mysite.com/test_1234567890.css
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Jan 2014 19:05:03 GMT
Content-Type: text/css
Content-Length: 19578
Last-Modified: Mon, 13 Jan 2014 18:54:53 GMT
Connection: keep-alive
X-Backend: stage01
Accept-Ranges: bytes
5
Chris Montanaro

私はブラケットを\ dの周りに置かずにそれを試してみます、ブラケットは通常、連続した文字または数字のいずれかに使用され、ブラケットは文字「\」または「d」のいずれかに一致すると言います

"^(.*)(\d{10})\.(min\.)?(css|js)$"

また、括弧内にキャプチャしているグループ情報を具体的に保存していますか?

以下のコメントを明確にするために。

簡単に始めましょう。

"^.*[0-9]*\.css$"

"^.*[:digit:]*\.css$"

"^.*\d*\.css$"

どの作品に応じて、そのベースを数字に使用し、以下のように展開します。

"^.*\d{10}\.(min\.)?(css|js)$"

Http/httpsも一致している場合は、以下のhttp/sで開始できます。数字表記が機能するように変更してください。

"^http(s)?://.*[0-9]{10}\.(min\.)?(css|js)$"
2
rfelsburg