使用Nginx中的params重定向URL



在nginx中,我正在重定向一个带有以下参数的URL:

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

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

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

一切都按预期进行。但这里我有一些疑问:

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

我没有什么比更好的了

location /watch {
    return 302 $scheme://$host?vid=$arg_v;
}

它避免了使用ifrewrite,这总是一件好事。如果您需要检查URI中的v=,那么使用if,而不是测试$arg_v是否为空。

然而,即使没有参数或为空,它也会重定向。我想你应该从重定向的位置过滤掉那些案例。

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

最新更新