在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;
}
它避免了使用if
和rewrite
,这总是一件好事。如果您需要检查URI中的v=
,那么使用if
,而不是测试$arg_v
是否为空。
然而,即使没有参数或为空,它也会重定向。我想你应该从重定向的位置过滤掉那些案例。
从SEO的角度来看,我没有看到任何区别。不过,我会避免为任何带有参数的URI提供服务。我更喜欢像example.com/video/123456
这样的URI