我有一个位于 的 WordPress 网站mysite.com/blog
,其文件位于/var/www/mysite/wordpress
。为什么当我访问 时,只有从 中mysite.com/blog/test
删除时,我的嵌套位置块才会被命中?$args
try_files
server {
server_name mysite.com;
location /blog {
alias /var/www/mysite/wordpress;
try_files $uri $uri/ /blog/index.php$args;
location ~ \.php {
# This is only reached if I remove $args from try_files
return 401; # For testing purposes
}
}
}
以下是日志中的相关错误:
"/usr/share/nginx/html/index.php" failed (2: No such file or directory)
答案1
因为你忘记了和?
之间。便利变量在必要时包含,而当没有查询字符串时则为空。index.php
$args
$is_args
?
try_files $uri $uri/ /blog/index.php$is_args$args;
当然,使用 WordPress 时你$args
根本不需要使用,因为它会在其他地方获取查询字符串:
try_files $uri $uri/ /blog/index.php;
足够了。
看来您正在使用try_files
withalias
指令。这是长期存在的错误在 nginx 中,请改用root
指令。