Nginx:无查询字符串的 301 重定向

Nginx:无查询字符串的 301 重定向

我正在重定向/example.php?var=value/index.htm这样的:

rewrite /example.php?var=value / permanent;

但是,浏览器会像这样打印最终的 uri:

domain.com/?var=value

我怎样才能拥有如此干净的 uri?

domain.com

谢谢。

答案1

摘录自nginx 重写模块文档

如果在替换参数行中指明了参数,则其余请求参数将附加到这些参数中。为了避免附加这些参数,请将问号作为最后一个字符:

rewrite  ^/users/(.*)$  /show?user=$1?  last;

答案2

在替换的末尾放置一个问题掩码:

    location ~ \.php$ {
        location ~ /example\.php$ {
            if ($args ~ var=value) {
                rewrite ^ /? permanent;
            }
        }
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi.conf;

        fastcgi_intercept_errors        on;
        error_page 404 /error/404.php;
    }

答案3

我发现的最简单的方法是:

rewrite ^/example.php /? permanent;

谢谢大家。

相关内容