尝试为 nginx 设置 cloudflare 缓存插件时,我收到的错误是“/robots.txt”位于位置“.php$”之外。Robots.txt 文件存在于 worpress 中,在此先行致谢。
服务器 {
服务器名称www.mydomain.com我的域名.com;
访问日志/srv/www/mydomain.com/logs/access.log;
错误日志/srv/www/mydomain.com/logs/error.log;
根/srv/www/mydomain.com/public_html;
索引索引.php;
地点 / {
try_files $uri $uri/ /index.php?$args;
}
位置 ~ .php$ {
包括/etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index索引.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
位置 ~* .(xml|xsl)$ { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; 过期 -1; }
位置 /robots.txt { add_header Cache-Control “no-cache, no-store, must-revalidate, max-age=0”; 过期 -1; }
位置/wp-cron.php { add_header Cache-Control“no-cache,no-store,must-revalidate,max-age = 0”; 到期-1; }
答案1
您提供的 Nginx 配置部分在语法上不正确(不完整)。请检查所有左括号是否都有相应的右括号。
我认为问题与此有关。您的location ~ .php$
代码块似乎没有我期望的右括号,并且该代码块location /robots.txt
显示为它的子代码块。这是错误的根源。
避免此类错误的最简单方法是始终一致地缩进配置文件。这种缩进不仅仅是为了美观。它是为了你自己,让你少犯这样的错误:
location ~ .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
这是您的配置中似乎缺少的右括号。