【问题标题】:How to redirect single URL in Nginx?如何在 Nginx 中重定向单个 URL?
【发布时间】:2013-08-04 22:52:39
【问题描述】:

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

谢谢!

【问题讨论】:

  • 是“isse”还是“issue”?!答案假定“问题”...
  • 问题,修正了错字

标签: nginx url-rewriting


【解决方案1】:
location ~ /issue([0-9]+) {
    return 301 http://example.com/shop/issues/custom_isse_name$1;
}

【讨论】:

  • @Cybolic 我刚刚在版本为1.10.3 的docker 映像上测试了它,这很好,你能以某种方式提供你的配置文件吗?你可能错过了什么。
【解决方案2】:

把它放在你的服务器指令中:

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

【讨论】:

    【解决方案3】:

    如果您需要复制多个重定向,您可以考虑使用地图:

    # 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 的 RewriteRules。
    • 您将如何将此地图方法与现有位置 / ... proxy_pass 类型设置相结合?
    • @redirect-map 位置,您可以尝试if ($redirect_uri = "") {return 404;},然后是proxy_pass 的东西。可能需要使用 $redirect_uri 重写。
    • 这可能是需要的,而不是 2 个 location 块,具体取决于您的设置。例如,这适用于 Craft CMS。 location ~ ^(.*)$ { if ($redirect_uri) { # redirect if the variable is defined return 301 $redirect_uri; } try_files $uri $uri/ /index.php?p=$uri&$args; }
    猜你喜欢
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2016-06-01
    相关资源
    最近更新 更多