重写目录作为参数

我正试图redirect请求

example.com/abc234

example.com/setup.html?s=abc234

到目前为止,我已经尝试了以下方法,但似乎总是以1)不传递参数或2)以无限循环(或404)结束,因为它也尝试redirectredirect的请求? 该请求必须被明显改写,因为我想用JS取代参数,而不是PHP。

 server { server_name example.com; root /var/www/html; rewrite ^(.*)$ /setup.html?s=$1 redirect; } 

我也尝试了各种各样的location / { try_files ...; }组合location / { try_files ...; } location / { try_files ...; }或在rewrite使用绝对URL而不成功。

一种技术是只重写不匹配物理文件的URI。

例如:

 server { server_name example.com; root /var/www/html; location / { try_files $uri $uri/ @rewrite; } location @rewrite { return 302 /setup.html?s=$uri; } } 

请参阅此文档了解更多 重写^(。*)$ /setup.html?s=$1重定向; }