我有一堆“redirect规则”,我希望Nginx为我做这个看起来像这样的:
/news/?p=12312 ---> /news/some/new/url.html /news/?p=12fsd312 ---> /news/some/new/url.html
我怎样才能让Ngnix将任何访问/news/?p=12312人redirect到/news/some/new/url.html ?
我努力了
rewrite ^/news/?p=123$ /news/some/new/url.html last;
但似乎并不奏效。
事实是Nginx认为所有的东西都是在? 作为查询string,而不是作为URI的一部分。
我会做的是比较query_string值来触发redirect。 像这样的东西:
server { root /var/www; index index.html; if ($arg_p = 12312) { rewrite ^ /news/some/new/url.html break; } if ($arg_p = 12fsd312) { rewrite ^ /news/some/new/url.html break; } }
请注意,我使用了$arg_p因为你的参数是p=123456 。 对于像donaldDuck=123456这样的参数,你将不得不使用$arg_donaldDuck (希望我很清楚)。
更准确地说: $arg_X其中X是参数的名称。