Почему nginx не нравятся мои $args?
У меня есть сайт 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
с alias
директивы. Это давняя ошибка в nginx, используйте root
директива вместо