У меня есть сайт 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)
Потому что ты забыл ?
между 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
вместо этого директива.