我的网址看起来像这样:
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
答案 0 :(得分: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;
}
答案 1 :(得分:0)
假设用户名中没有'。',则可以使用正则表达式:
(https?://)([a-zA-Z0-9_]+)(\..*)
使用第二个分组调用进行简单替换。使用perl模块favoretti建议这样做应该可以正常工作,但我坦率地说没有足够的经验来使用nginx或perl模块。