在Nginx中使用params重定向URL

时间:2014-11-07 21:45:19

标签: redirect nginx url-rewriting rewrite

中,我正在使用以下参数重定向网址:

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的好方法吗?如果不是那么它是如何实现的?
  • 中上述重定向的其他更好的替代方案

1 个答案:

答案 0 :(得分:4)

我没有比这更好的了。

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

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

然而,即使没有参数或者它是空的,它也会重定向。我想你应该从重定向的位置过滤掉这些情况。

从SEO的角度来看,我没有看到任何差异。不过,我会避免使用参数提供任何URI。我更喜欢像example.com/video/123456

这样的URI