我正在尝试做的事情:
转变
/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;
}
}
服务器正在获取从另一个 Nginx 代理(另一个远程服务器)传递的 URL。(并且该服务器确实有 SSL,端口 443)
我尝试过的项目:
rewrite ^/posts/index.php /posts/$arg_post permanent;
编辑:
抱歉,我没有说,查询必须进入索引,因为 ?post 是一个查询,进入数据库。我想让你不需要查询,而只需转到 {帖子编号}
答案1
帖子标题可以是“转换/重写 URL 路径以进行查询”。无论如何,根据编辑和评论,rewrite ^/posts/(?<id>[a-zA-Z0-9]+)$ /posts/?post=$id;
可能会有效。无需使用permanent
标志rewrite
。如果使用permanent
,用户将被重定向。
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;
}
}