Nginx 从子文件夹永久重定向

Nginx 从子文件夹永久重定向

我想要实现的是从 mysite.com/en/something/something1 重定向到 mysite.com/something/something1 有没有办法使用 nginx conf 从 url 中删除静态子路径 /en/?

答案1

您可以使用 Nginx 的rewrite指令从 URL 中删除/en子路径。以下是示例:

server {
    listen 80;
    server_name mysite.com;

    # Redirect /en/ URLs to their equivalent URL without /en/
    rewrite ^/en/(.*)$ /$1 permanent;

    # Your other server configuration goes here
    ...
}

该指令使用正则表达式rewrite匹配以 开头的任何 URL并捕获该子路径之后的所有内容。然后,它重写 URL 以删除 /`en/ 子路径,并使用 permanent 标志将客户端重定向到新 URL,这会告诉客户端永久缓存重定向。/en/(.*)

请注意,此配置假定您要永久重定向所有以 /en/ 开头的 URL。如果您只想删除特定一组 URL 的 /en/ 子路径,则需要调整重写指令中的正则表达式以仅匹配这些 URL。

我希望这能有所帮助!

答案2

上述方法的另一种替代方案:

server {
    location ~ ^/en(/.+) {
        return 301 $1;
    }

    location / {
        ... other configuration
    }
}

相关内容