5

次のような URL が届きます。

https://some_sub_domain.whatever.com

次の場所にリダイレクトする必要があります。

https://some-sub-domain.whatever.com

サブドメインがどうなるかわかりません (ユーザー名です)。

サブドメインのアンダースコアを置き換える必要がありますが、他のアンダースコアはそのままにしておく必要があります。

https://some_sub_domain.whatever.com/hey_there_underscore

次の場所にリダイレクトする必要があります。

https://some-sub-domain.whatever.com/hey_there_underscore
4

2 に答える 2

6

lua 経由で書き換える方法は次のとおりです。

location / {
  rewrite_by_lua '
  if string.find(ngx.var.host, "_") then
    local newHost, n = ngx.re.gsub(ngx.var.host, "_", "-")
    ngx.redirect(ngx.var.scheme .. "://" .. newHost .. ngx.var.uri)
  end
  ';
  proxy_pass       http://my_backend;
  proxy_set_header Host $host;
}
于 2013-01-29T04:48:29.020 に答える
0

ユーザー名に「.」がないと仮定すると、正規表現を使用できます。

(https?://)([a-zA-Z0-9_]+)(\..*)

そして、2 番目のグループ化呼び出しを使用して、単純な置換を行います。提案されたperlモジュールfavorettiでこれを行うとうまくいくはずですが、率直に言って、nginxまたはperlモジュールでそれを行うのに十分な経験がありません.

于 2013-01-29T03:33:11.040 に答える