我创建了一个带有永久链接的 WordPress 页面,http://domain.tld/health_status
用于 WordPress 健康监测。该页面访问频繁,因此我不希望这些请求出现在我的访问日志中。
所有 WordPress 页面的基本“重写规则”是:
location / {
try_files $uri $uri/ /index.php?q=$args;
}
现在,在同一层面上,我尝试
location /health_status {
access_log off;
#try_files $uri $uri/ /index.php?q=$args;
}
从 nginx位置文档:
文字字符串与查询的开头部分匹配 - 将使用最具体的匹配
/health_status
比 更具体/
,因此当我请求 时,此块会采取行动http://domain.tld/health_status
。
注释掉该try_files
行(如上)后,请求不会显示在访问日志中,好极了,但显然我只是收到 404 错误,因为 nginx 没有将此请求重定向到 WordPress。
当该线路处于活动状态时,会发生try_files
对 WordPress 的内部重定向,并且WordPress 页面会显示在浏览器中。但是,内部重定向之后,阻止不再起作用,请求最终会进入访问日志。index.php
/health_status
location /health_status
如何彻底解决这个问题?我现在是否必须添加另一个与/index.php?q=healthstatuswhatever
内部重定向后发生的实际请求匹配的块?
谢谢!
答案1
您应该对发往 WordPress 的请求使用命名位置。例如:
location ~ \.php$ {
try_files $uri =404;
fastcgi_ ### fastcgi params and other config for PHP go here
}
location @wordpress {
try_files $uri /index.php;
fastcgi_ ### fastcgi params and other config for WP go here
}
location / {
try_files $uri $uri/ @wordpress;
}
location /health_status {
access_log off;
try_files $uri $uri/ @wordpress;
}
此示例不完整且可能不安全;它仅演示如何解决您的问题。请务必妥善保护您的 Web 服务器。