web-dev-qa-db-ja.com

特定の単語が1つ含まれているが、他の単語は含まれていないすべてのURLのリダイレクト

私は自分のWebサイトを別のプラットフォームに移行していますが、新しいWebサイトのすべてのページの開発が完了するまでの間、ユーザーが2つのプラットフォーム間を移動する必要があります。

したがって、具体的には1つの単語が含まれているが、他の単語は含まれていないすべてのURLの301リダイレクトを作成する必要があります。

例:

  1. 古いサイト:www2.misite.com
  2. 新しいサイト:www.misite.com

「www2.misite.com/travel(.*)」という単語を含み、「reservation」と「hotel」という単語を含まないすべてのURLをリダイレクトする必要があります。

私のサーバーはNginxです。これが正規表現で行われるのか、nginxステートメントで行われるのかはわかりません。

どうもありがとうございました。

2
Alorse

次の方法で問題を解決できました。

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

ありがとうございました。

6
Alorse

やってみる

location ~ /travel(.*)+/(.*)$ {
    if ($request_uri !~ "^/(reservation|hotel|faq)/\w+$"){
        return 301 https://www.misite.com/$1;
    }
}

ただし、内部状態では機能しません。 :(

0
Alorse

転送したくない2つの単語について、否定的な前向きの正規表現を試してください。これは、if条件または書き換えルールで行うことができます。

0
BillThor