49231
個人でウェブサイト運営しており、サービスの拡張に伴って現在の構成から設定を変更したいと考えています。しかし、そのための最適な設定方法がわからないのでこちらで質問させていただきました。

現在、"www.example.com/blog/"以下に、Wordpressで作ったブログを設置しているのですが、これを"blog.example.com/"という別サブドメインのルートディレクトリ以下に、まるごとリダイレクトするように設定したいです。

www.example.com **/blog/hogehoge** -> blog.example.com **/hogehoge**

Nginx設定については自分なりに調べてみたのですが同じような条件での設定がなかなか見つからず、自分の知識ではうまく動きそうなものが思いつきません。

以下のようにしてしまうと、必ずトップページにリダイレクトしてしまいます。

```

    server {
        listen      443 ssl http2default_server;
        server_name  www.example.com;
    
        location /blog/ {
            return 301 https://blog.example.com;
        }
    }
    
```

そこで、リクエストされたuriを引き継ぐために、http->httpsでのリダイレクトでは"$request_uri"という変数（？）を使っていました。

そこから、このようにすることも考えたのですが、

```

       location /blog/ {
       return 301 https://blog.example.com$request_uri;
       }
    
```

これだとリクエストURIの先頭にある"/blog"の部分もリダイレクト時の情報に含まれてしまうため、

www.example.com **/blog/hogehoge** -> blog.example.com **/blog/hogehoge**

のようにそのままのURIでリダイレクトしてしまい、これでは設定したいものと異なります。

$request_uriを取得して編集したものを別の変数に代入等といったことができればいいのですが、Nginxの設定でどのようにするのかわかりません。

これを解決するための方法、もしくはそれを学ぶことのできるURL等を教えていただきたく存じます。稚拙な文章かつ初歩的な内容の質問ではありますが、お力添え願います。
CC BY-SA 4.0
2018-10-12T22:38:46.560
49229
2018-10-14T02:33:09.357
30500
question
nginx wordpress
Nginxの特定ディレクトリ以下を別のサブドメインに301リダイレクトする設定
正規表現を使って次のように変更すると動作すると思います。

```

    location ~ ^/blog/(.*)$ {
      return 301 https://blog.example.com/$1;
    }
    
```
CC BY-SA 4.0
2018-10-13T00:04:48.893
49231
2018-10-14T02:33:09.357
2018-10-14T02:33:09.357
15171
15171
49229
answer