我有一个位于mysite.com/blog的WordPress网站,其文件位于/var/www/mysite/wordpress 。 为什么当我访问mysite.com/blog/test ,如果我从try_files删除了$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)
因为你忘了? 在index.php和$args之间。 便利variables$is_args包含一个? 如有必要,在没有查询string时为空。
try_files $uri $uri/ /blog/index.php$is_args$args;
当然,对于WordPress,您根本不需要使用$args ,因为它在别处获取查询string:
try_files $uri $uri/ /blog/index.php;
足够了。
看起来你正在使用带有alias指令的try_files 。 这是nginx中的一个长期存在的错误 ,请改用root指令。