重定向所有包含 1 个特定单词但不包含其他单词的 URL

重定向所有包含 1 个特定单词但不包含其他单词的 URL

我正在将我的网站迁移到另一个平台,但是当我完成新网站的所有页面的开发时,我需要我的用户在两个平台之间导航。

因此,我需要对包含 1 个特定单词但不包含其他单词的所有 URL 进行 301 重定向:

例子:

  1. 旧网站:www2.misite.com
  2. 新网站:www.misite.com

我需要重定向所有包含单词“www2.misite.com/travel(.*)”但不包含单词“reservation”和“hotel”的 URL。

我的服务器是 Nginx,我不知道这是用正则表达式还是用 nginx 语句完成的。

非常感谢。

答案1

我能够通过以下方式解决我的问题:

    location ~ /travel(.*)+/(.*)$ {
    if ($uri !~ "^(.*)/(reservation|hotel|faq)(.*)"){
        return 301 https://www.misite.com$request_uri;
    }
    autoindex on;
    root /usr/share/nginx/html/sites/;
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
}

谢谢。

答案2

尝试使用正则表达式来否定前瞻,以查找您不想转发的两个单词。您可以在 if 条件或重写规则中执行此操作。

相关内容