Nginx добавляет косую черту перед аргументом PHP-файла

Это вопрос переписывания, но, похоже, это не проблема самих переписываний - я сделал все, что мог, чтобы попытаться исследовать их. Я перемещаю веб-сайт из структуры на основе PHP в Ghost, и я пытаюсь перенаправить URL-адреса в виде example.com/blog/blog.php?postid=28 в example.com/post-title-here/, Однако всякий раз, когда я пытаюсь получить доступ к первому URL-адресу для проверки решения перезаписи, он добавляет косую черту непосредственно перед ? и затем продолжает давать мне 404. Я заметил, что это делает это без каких-либо locationправила Это то, что мешает любому решению переписать работать? Если так, как я могу остановить это от этого?

example.com.conf:

server {
        listen          80;
        server_name     example.com;
        location / {
                proxy_pass http://127.0.0.1:2368;
                proxy_set_header Host $host;
        }
}

1 ответ

Решение

Мне удалось продолжить некоторые исследования и ответить на свой вопрос. Мой конфигурационный файл (хранится в /etc/nginx/conf.d/) теперь выглядит так:

map $query_string $updated_path {
        "postid=28"     "/proper-path-to-post/";
        "postid=27"     "/another-proper-path/";
        ...
}

server {
        listen          80;
        server_name     www.domain.*;

        location /blog/blog.php {
                rewrite ^/blog/blog.php $updated_path? permanent;
        }

        location / {
                proxy_pass http://127.0.0.1:2368;
                proxy_set_header Host $host;
        }
}

Я не понимал, что nginx принимает какие-либо аргументы к URL (материал после ?) и сохраняет его в переменной $query_string, так что мой предыдущий конфиг был недействительным. Блок карты делает в основном то, что говорит - отображает случаи $query_string какой должен быть правильный путь к посту. Затем в блоке сервера /blog/blog.php location перезаписывает любые URL-адреса по правильному пути на основе аргументов. ? в конце $updated_path говорит nginx не возвращать аргументы, переданные в URL.

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