我正在使用cakephp,我的一些资产(javascript和css)需要重写 - 例如:
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
try_files $uri $uri/ /index.php?$uri\&$args;
expires 1M;
access_log off;
add_header Pragma "public";
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
然而,当我进行重写时,我在此位置块中添加的标头会丢失。 Cakephp中的重写需要index.php文件,因此上面的try_files指令最终将我带到了这个位置:
location ~* \.(?:php)$ { ... }
然后,资源仅接收在该位置设置的标头。这不是我想要的 - 我希望能够重写资产并应用正确的标题...尽管在网上到处查找,但我无法找到如何防止重写更改资源的标题。
答案 0 :(得分:0)
应该通过将您的webroot设置为文档根目录来工作。
检查下面的配置
root /home/your_user/your_app/webroot;
index index.html index.htm index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
向资源添加标题
location ~* \.(type|type1|type2|type3)$ {
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
}