将目录重写为参数

时间:2017-06-17 12:58:27

标签: nginx nginx-location

我正在尝试重定向来自

的请求

example.com/abc234

example.com/setup.html?s=abc234

到目前为止,我已尝试过以下内容,但它似乎总是以1)不传输参数或2)以无限循环(或404)结束,因为它还尝试重定向重定向的请求?请求必须明显重写,因为我想用JS而不是PHP来获取参数。

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

我还尝试了location / { try_files ...; }的各种组合或使用rewrite中的绝对网址,但没有成功。

1 个答案:

答案 0 :(得分:1)

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

例如:

server {
    server_name  example.com;
    root         /var/www/html;

    location / {
        try_files $uri $uri/ @rewrite;
    }
    location @rewrite {
        return 302 /setup.html?s=$uri;
    }
}

有关详情,请参阅this document。  重写^(。*)$ /setup.html?s=$1重定向; }