Nginx не передает запрос на PHP

Это связано с старым вопросом, который я задал на SO лет назад, на который я так и не получил правильного ответа. Я просто настраиваю новый сервер (Ubuntu 16.04, Nginx 1.10, PHP 7) и возвращаюсь к этому.

У меня есть экземпляр Question2Answer, работающий во вложенной папке, а другой код PHP запускается из корня. Что касается корневого материала, у меня в блоке сервера есть следующее:

location / {
    try_files $uri $uri/ /index.php?$request_uri;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

Для Q2A на моем старом сервере было следующее:

location /qa/ {
    if (!-e $request_filename) {
        rewrite ^/qa/(.*)$ /qa/index.php?qa-rewrite=$1 last;
    }
}

Это действительно работает, но я не думаю, что это должно быть сделано (если зло и т. д.). Я уверен, что это возможно с использованием только try_files . Я пробовал это:

location /qa/ {
    try_files $uri $uri/ /qa/index.php?qa-rewrite=$uri&$args;
}

Но это не работает, потому что / qa / передается в qa-rewrite . Он должен просто передать все после этого на пути. Есть ли способ удалить / qa / из переменной $ uri ?

Я также пробовал это:

location ~ ^/qa/(.*) {
    try_files $uri $uri/ /qa/index.php?qa-rewrite=$1;
}

Но вместо этого начинается загрузка кода PHP для index.php ! Как мне заставить его передать это на движок PHP?

2
задан 23 May 2017 в 15:41
1 ответ

Теги

Похожие вопросы