URL にスラッシュを含む nginx リダイレクト

URL にスラッシュを含む nginx リダイレクト

私は、すべての QR コードを指定された URL 構造にヒットさせ、それを nginx 経由で指定された場所に転送することで、マーケティング活動のために RYO QR コード管理システムを実行しています。

次のような構造で設定しようとしています:

server {
      listen 80;
      server_name mydomain.com/c/m/b/1;
      return 301 $scheme://myotherdomain.com$request_uri;
}

nginx を起動すると、サーバー名の行に疑わしい文字が含まれていると表示されます。ドメイン名にスラッシュを使用することはできますか?

答え1

これはあなたが何を望んでいるかを推測した内容です。

http://mydomain.com/すべてのURL を にリダイレクトする場合はhttp://myotherdomain.com/、次のようにします。

server {
    listen 80;
    server_name mydomain.com;

    rewrite ^ http://myotherdomain.com$request_uri permanent;
}

特定のパスのみをリダイレクトしたい場合は、次のlocationディレクティブを使用できます。

server {
    listen 80;
    server_name mydomain.com;

    location /c {
        rewrite ^ http://myotherdomain.com$request_uri permanent;
    }
}

答え2

いいえ、スラッシュはドメイン名の有効な部分ではありません。また、パスとプロトコル部分を区切るために使用することもできません (http://) です。

拡張パラメータ(正規表現)がserver_nameconfig ステートメントが役立ちます。

関連情報