如何在 Nginx 重定向单一网址?

我正在重新组织 URL 结构。 我需要为特定的 URL 设置重定向规则-我正在使用 Nginx。

基本上是这样的:

http://example.com/issue1 --> http://example.com/shop/issues/custom_issue_name1
http://example.com/issue2 --> http://example.com/shop/issues/custom_issue_name2
http://example.com/issue3 --> http://example.com/shop/issues/custom_issue_name3

谢谢!

236404 次浏览

把这个放到你的服务器指令中:

location /issue {
rewrite ^/issue(.*) http://$server_name/shop/issues/custom_issue_name$1 permanent;
}

或者复制它:

location /issue1 {
rewrite ^/.* http://$server_name/shop/issues/custom_issue_name1 permanent;
}
location /issue2 {
rewrite ^.* http://$server_name/shop/issues/custom_issue_name2 permanent;
}
...
location ~ /issue([0-9]+) {
return 301 http://example.com/shop/issues/custom_isse_name$1;
}

If you need to duplicate more than a few redirects, you might consider using a map:

# map is outside of server block
map $uri $redirect_uri {
~^/issue1/?$    http://example.com/shop/issues/custom_isse_name1;
~^/issue2/?$    http://example.com/shop/issues/custom_isse_name2;
~^/issue3/?$    http://example.com/shop/issues/custom_isse_name3;
# ... or put these in an included file
}


location / {
try_files $uri $uri/ @redirect-map;
}


location @redirect-map {
if ($redirect_uri) {  # redirect if the variable is defined
return 301 $redirect_uri;
}
}