Почему 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 директива вместо

Другие вопросы по тегам