如何在Nginx中重定向单个URL?

如何在Nginx中重定向单个URL?,nginx,url-rewriting,Nginx,Url Rewriting,我正在重新组织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 -->

我正在重新组织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

谢谢

将其放在服务器指令中:

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;
}
 ...

如果你需要复制多于一些重定向,你可以考虑使用一个映射:

# 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;
    }
}

是“是”还是“问题”?!答案假设为“问题”…这是问题,修复了输入错误这就是我来这里要找的--将这些内容放在包含的文件中是替换我的.htaccess文件的一个很好的方法,其中包含了来自apache的重写规则。您如何将这种映射方法与现有位置相结合/。。。代理通行证类型设置?在
@redirect map
位置,您可以尝试
如果($redirect\u uri=“”){return 404;}
,然后是代理通行证内容。可能需要使用
$redirect\u uri
进行重写。根据您的设置,可能需要使用此重写,而不是2个
位置
块。这是为工艺CMS的例子
location~^(.*)${if($redirect_uri){#redirect if变量已定义返回301$redirect_uri;}try_files$uri$uri//index.php?p=$uri&$args;}
@Cybolic我刚刚用版本
1.10.3
在docker图像上测试了这一点,很好,你能提供你的配置文件吗?你可能遗漏了什么。
# 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;
    }
}