【发布时间】:2012-03-23 15:10:11
【问题描述】:
nginx 文档说server_name directive 支持正则表达式。我一直在努力尝试让一个微不足道的正则表达式工作。
我希望http://subdomain.mydomain.com 重定向到http://mydomain.com/subdomain
这是我的代码。
server {
server_name "~^subdomain\.mydomain\.com$";
rewrite ^ http://mydomain.com/subdomain;
}
另外,可能值得注意。在 nginx 配置文件的下方有一条规则:
server {
server_name *.mydomain.com
...
}
我做错了什么?
更新:
有人建议我不要为此使用正则表达式...以提供更清晰的信息:琐碎的正则表达式仅用于故障排除。真正的正则表达式看起来更像...
server {
server_name "~^.*(cvg|cincinnati)\.fakeairport(app)?\.(org|com)$";
rewrite ^ http://fakeairport.com/cincinnati;
}
server {
server_name "~^.*(lex|lexington)\.fakeairport(app)?\.(org|com)$";
rewrite ^ http://fakeairport.com/lexington;
}
所以最好使用正则表达式。
【问题讨论】:
-
对nginx一无所知,但为什么正则表达式的开头有波浪号?
-
前导波浪号告诉 nginx 这是一个正则表达式。