在 Nginx 中使用参数进行 URL 重定向

Akh*_*esh 2 redirect rewrite nginx url-rewriting

,我使用如下参数重定向 URL:

www.example.com/watch?v=12345678 -> www.example.com?vid=12345678

所以我为此写了以下配置:

location  /watch {
    if ($args ~* v=(.*)) {
        set $args vid=$1;
        rewrite ^/watch?(.*)$ / redirect; 
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作。但在这里我有几个疑问:

  • 是否可以在不使用 if 条件的情况下实现它(我尝试过但失败了)
  • 如何在不使用 set 的情况下重写重定向(请参考:http : //lethain.com/rewriting-parameterized-urls-with-nginx/
  • 这是SEO的好方法吗?如果不是那么如何实现?
  • 进行上述重定向的任何其他更好的选择

Ber*_*set 6

我没有什么比:

location /watch {
    return 302 $scheme://$host?vid=$arg_v;
}
Run Code Online (Sandbox Code Playgroud)

它避免使用ifand rewrite,这总是一件好事。如果您需要v=在 URI 中检查,则使用if,而是测试是否$arg_v为空。

但是,即使没有参数或它为空,它也会重定向。我想您应该从重定向位置中过滤掉这些案例。

从 SEO 的角度来看,我没有看到任何区别。不过,我会避免为任何带参数的 URI 提供服务。我更喜欢像这样的 URIexample.com/video/123456