要将动态地址https://www.baidu.cn/job/list/12?cate_id=36重定向到https://www.baidu.com.cn/job/zhaopin/12/0/0/,并且兼容重定向https://www.baidu.cn/job/list/12,您可以使用 Nginx 的重写规则来实现。
例如,您可以在 Nginx 的配置文件中添加以下代码:
location /job/list/ {if($args~*"cate_id=(\d+)") { rewrite ^/job/list/(\d+)$ /job/zhaopin/$1/0/0/ permanent; } rewrite ^/job/list/(\d+)$ /job/zhaopin/$1/0/0/ permanent;}
这个配置的含义如下:
location /job/list/:匹配请求路径中包含/job/list/的所有请求。
if ($args ~* "cate_id=(\d+)"):使用正则表达式匹配参数中是否包含cate_id参数,如果存在,则使用第一个rewrite规则将动态地址重定向到静态地址。
rewrite ^/job/list/(\d+)$ /job/zhaopin/$1/0/0/ permanent;:使用正则表达式匹配请求路径中的参数(\d+),将其保存到$1变量中,并将其拼接到重定向的 URL 地址中。如果请求路径中没有cate_id参数,则使用第二个rewrite规则将动态地址重定向到静态地址。
这样,当请求动态地址https://www.baidu.cn/job/list/12?cate_id=36时,Nginx 会将其重定向到静态地址https://www.baidu.com.cn/job/zhaopin/12/0/0/,同时保留原有的参数。当请求动态地址https://www.baidu.cn/job/list/12时,Nginx 也会将其重定向到静态地址https://www.baidu.com.cn/job/zhaopin/12/0/0/,只是没有参数传递。