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

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

example.com.conf :

server {
        listen          80;
        server_name     example.com;
        location / {
                proxy_pass http://127.0.0.1:2368;
                proxy_set_header Host $host;
        }
}
0
задан 31 March 2017 в 12:14
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, так что мой предыдущий конфигурационный файл был недействителен. Блок map делает в основном то, что он говорит - отображает случаи $query_string к тому, каким должен быть правильный путь к сообщению. Затем, в серверном блоке расположение /blog/blog.php переписывает любой URL в правильный путь, основываясь на аргументах. ? в конце $updated_path говорит nginx не повторять аргументы, переданные по URL.

.
0
ответ дан 5 December 2019 в 11:16

Теги

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