NGINX Rewrite Query as Path?

Что я пытаюсь сделать:

Преобразовать

/posts/?post={randomnumber-atoF}
or
/posts?post=120430awasdfwasfw

в

/posts/120430awasdfwasfw

мой блок сервера (пока что)

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /forum;
        index index.php;
        server_name forum.example.net;
        location / {
                try_files $uri $uri/ =404;
        }
        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        location ~ /\.ht {
                deny all;
        }
}

Сервер получает URL, переданный от другого прокси Nginx (другой удаленный сервер). (и этот сервер имеет SSL, порт 443)

Пункты, которые я пробовал:

rewrite ^/posts/index.php /posts/$arg_post permanent;

редактировать:

извините, я не сказал, что запрос идет в индекс, так как пост - это запрос в базу данных. Я хочу сделать так, чтобы вам не нужен был запрос, а просто перейти к {номер поста}

1
задан 7 July 2021 в 10:58
1 ответ

Заголовок сообщения может быть «преобразовать / перезаписать URL-адрес в запрос». В любом случае, согласно редактированию и комментариям, rewrite ^ / posts / (? [a-zA-Z0-9] +) $ / posts /? Post = $ id; может работать. Нет необходимости использовать постоянный флаг для перезаписи . Если вы используете постоянный , пользователь будет перенаправлен.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /forum;
        index index.php;
        server_name forum.example.net;

        rewrite ^/posts/(?<id>[a-zA-Z0-9]+)$ /posts/?post=$id;

        location / {
                try_files $uri $uri/ =404;
        }
        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        location ~ /\.ht {
                deny all;
        }
}
0
ответ дан 28 July 2021 в 13:22

Теги

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