작동하는 위치 및 다시 쓰기 지시문 쌍이 있지만 최적화 할 수 있어야하는 중복이 있습니다. /css/20141201-styles.css
과 같은 외부 URL을 사용하며 /css/styles.css
을 제공합니다.중복 Nginx 위치 및 다시 쓰기 정규 표현식
location ~ '^/(css|js)/[0-9]{8}-' {
rewrite '^/(css|js)/[0-9]{8}-(.*)$' /$1/$2;
}
내가 두 번 일하고있는 것처럼 보입니다. 한 번 일치하고 다시 한 번 다시 쓰는 것 같습니다. location
지시문에서 일치 항목을 캡처 한 다음 rewrite
에서 일치하는 방법이 있습니까?
location ~ '^/(css|js)/[0-9]{8}-(.*)$' {
rewrite [something here?] /$1/$2;
}
, 그것은 다음과 같습니다
RewriteRule ^/(css|js)/[0-9]{8}-(.*)$ /$1/$2 [NC,L]
솔루션 Terra-
감사를 alias
지시자를 지적! 이 location
은 이미 지시어를 적용하는 다른 location
에 중첩되어 서버 경로를 처리합니다.
location ~ ^/(css|images|js)/ {
location ~ '^/(css|js)/[0-9]{8}-(.*)$' {
alias /$1/$2;
}
root /server/path/to/web/root;
}
UPDATE
이 또한 작동하고, 적은 수의 라인을 가지고있다. rewrite
지시문의 break
플래그가 server
수준의 루핑을 방지하여 just as performant을 alias
솔루션으로 만듭니다.
location ~ ^/(css|images|js)/ {
rewrite '^/(css|js)/[0-9]{8}-(.*)$' /$1/$2 break;
root /server/path/to/web/root;
}
재 작성은 항상 루트 또는 별명보다 최적입니다. 간단한 이유가 있습니다. 다시 쓰기는 내부 요청 URI를 변경하기 때문에 일치시킬 위치를 찾아야합니다. 백엔드에 대한 루트, 별칭 또는 디스패치 위치는 최종적이며 제공 될 수 있습니다. – Melvyn
@Melvyn - 당신은 그것에 대한 몇 가지 문서를 지적 해 주시겠습니까? 나는 네가하는 말을 잘 따르지 않고, 나는 그걸 좀 더 깊이 읽고 싶다. – Sonny
물론, 재 작성을위한 문서를보십시오. 재 작성이 완료되면 새 URL이 다시 사용 가능한 위치와 일치됩니다. – Melvyn