私は ngnix が初めてで、場所のディレクティブがよくわかりません。次の構成のWebサイトがあります。
location / {
rewrite ^(.*)$ /index.php last;
}
#assets
location /web/assets/ {
rewrite ^(/web/assets/.*)$ $1 break;
}
location /web/assets/cache/ {
if (!-f $request_filename) {
rewrite ^/web/assets/cache/(.*)$ /web/assets/cache/index.php last;
}
}
Web サイトでは、すべてのリクエストが index.php にリダイレクトされますが、リダイレクトしたくない "assets" フォルダー (/web/assets/) があります。このフォルダー内には、「キャッシュ」というサブフォルダーがあります。このサブフォルダー内のファイルが要求され、そのファイルが存在しない場合、要求は、ファイルを作成してキャッシュに保存する php ファイルにリダイレクトされます。これは、たとえば前処理された css、js などに役立ちます。ファイルは、最初に必要になったときに作成されます。
この構成はうまく機能しますが、html5 ボイダープレートの提案に従って、いくつかのヘッダーをアセット ファイルに送信したいと思います。 master/conf/expires.conf )、およびこれらのディレクティブを追加すると:
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
expires 1M;
access_log off;
add_header Cache-Control "public";
}
# CSS and Javascript
location ~* \.(?:css|js)$ {
expires 1y;
access_log off;
add_header Cache-Control "public";
}
以前のリダイレクトは機能しません。これは、nginx がすべての一致する場所を実行するのではなく、最初の場所のみを実行するためです。私の質問は、ngnix config で書き換えディレクティブとヘッダー ディレクティブを組み合わせる方法です。