如何在 nginx 中将除主页之外的所有 URL 和另一个指向主页的 URL 301

如何在 nginx 中将除主页之外的所有 URL 和另一个指向主页的 URL 301

我最近将一个网站从一个巨大的 WordPress 博客缩减为一个页面(主页)和另一个页面。

我想将所有非主页页面 301 重定向/confirmed到主页。我尝试过几种方法,但都以重定向循环结束。以下是我在配置文件中的内容。

谢谢您的帮助!

location / {
   try_files $uri $uri/ $uri/index.php?$args;
}

location /confirmed {
   try_files $uri $uri/ /confirm-user.php?$args;
}

使用此配置,所有其他 URL 都将转到主页,但不是 301。

答案1

我相信这会满足你的要求:

    location ~ "^/$" {
            try_files $uri $uri/ /index.php?$args;
    }

    location ~ "^/confirmed$" {
            try_files $uri $uri/ /confirm-user.php?$args;
    }

    location / {
            return 301 /index.php;
    }

答案2

这应该可以解决问题:

location = / {
    try_files $uri $uri/ /index.php?$args;
}

location = /confirmed {
    try_files $uri $uri/ /confirm-user.php?$args;
}

location / {
    return 301 /;
}

首先location匹配根路径,且只匹配根路径。

第二个块/confirmed仅匹配/confirmed

最后location匹配所有其他 URL,触发重定向。

更多信息可以在 nginx 核心模块中找到文档

相关内容