【问题标题】:How to add language code after domain name on nginxnginx如何在域名后添加语言代码
【发布时间】:2018-04-30 04:37:35
【问题描述】:

我想在 URL 上添加en-us 语言代码。期望如下。

当用户点击http://example.com/时,页面应将用户重定向到http://example.com/en-us/ 注意:我通过以下代码实现了这一点。

location = / {
      rewrite ^ /en-us/ redirect;
  }

如何将客户重定向到以下场景

简单地说,我想要实现的是,如果 url 中没有 en-us,那么我们应该在 XX-XX 位置添加 en-us。 http://example.com/XX-XX/contact

【问题讨论】:

    标签: nginx url-rewriting magento2.2


    【解决方案1】:
    # Do nothing for assets (paths with a dot)
    
    location ~ \. {
    }
    

    您可以使用负前瞻正则表达式 (?!) 匹配不以所需路径开头的位置

    # Paths that don't start  with /en-us/ are redirected:
    
    location ~ ^(?!/en-(us|in)/) {
        rewrite ^/(.*)$ /en-us/$1 redirect;
    }
    

    或者使用if 块:

    if ($request_uri !~ "^/en-(us|in)/")
    {
        return 301 /en-us/$request_uri;
    }
    

    【讨论】:

    • 您好,感谢您的回答,它运行良好。我又添加了 1 个场景(第 3 点)。是否可以限制url附加?
    • 是的,也包含正则表达式。
    • 谢谢它按预期工作。但是另一个问题来了,我不想在 js 和 css url 中附加这种语言代码。结果,页面未正确呈现。我希望此重定向仅适用于网站 URL,而不适用于静态文件。如果我们有这样的选择,那就太好了。
    • 你可以匹配静态资产并且有一个空块
    【解决方案2】:

    你读过rewrite documentation吗?那里有很多类似的例子。

    我会这样做(未经测试)。

    # Do not redirect /
    location = / {
    }
    
    # Redirect everything else to /en-us/...
    location / {
        rewrite ^/(.*)$ /en-us/$1 redirect;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 2022-08-22
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多