我在Nginx平台上运行wordpress,并分别在.php和静态资源上设置了expires标头。但现在要求是使用nginx将自定义过期标题添加到wordpress中的某些URL。我尝试添加位置块但似乎被.php块
中写的expires头覆盖我创建了一个名为sports的wordpress页面,并希望提供没有过期标题的网址,其余的网址过期标题应为10分钟
我的配置供参考:
server {
listen 0.0.0.0:80; # your server's public IP address
server_name www.abc.com; # your domain name
index index.php index.html ;
root /srv/www; # absolute path to your WordPress installation
set $no_cache 0;
try_files $uri $uri/ /index.php;
location ~*^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|css|woff|js|rtf|flv|pdf)$ {
access_log off; log_not_found off; expires 365d;
}
location / {
try_files $uri $uri/ /index.php?$args;
expires modified +10m;
}
location ~ .php$ {
try_files $uri /index.php;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
set $no_cache 0;
add_header Cache-Control public;
expires modified +10m;
}
location ~* /sports
{
expires -1;
}
}
答案 0 :(得分:0)
/sports/
之类的URI实际上已使用包含值/index.php
的参数路由到$request_uri
。在nginx
.php
内,这些全部由expires
位置块处理,并使用该块中的expires
指令的值和单独的块。
一种可能的解决方案是使location ~ \.php$ {
expires $expires;
...
}
指令的值为变量:
map
根据原始请求URI($request_uri
)创建map $request_uri $expires {
default off;
~^/sports +10m;
}
server {
...
}
个值:
map
请注意,http
指令位于server
块或与.ppsRightCol p {
display: none;
}
块相同的级别。