我怎样才能从http://www.*.domain.com重写到http://*.domain.com ?
提前致谢
– Deb
编辑:
对不起,我没有看到纺织格式从我的问题中删除*。 我现在修好了 我需要做的是从www.joe.domain.com到joe.domain.com,joe可以是任何单词。
domain.com之前的额外时间的意义是什么? 目标是从URL中删除www? 如果是这样,这应该做的伎俩:
if ($host ~* www\.(.*)) { set $host_without_www $1; rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo' }
不要忘了: sudo /etc/init.d/nginx restart来加载它
来源: NGINX Wiki
这是一个相当黑客。
性能明智的最快方式是
server { server_name www.domain.com; rewrite ^ http://domain.com$request_uri permanent; }
你保存一个正则expression式匹配以及两个捕获,再加上你使用哈希表来查找匹配的服务器块的好处。
此外,您不需要重新启动nginx – 重新加载是所有必需的,谁愿意有更多的停机时间比所需?
您可以使用正则expression式服务器名称(请参阅http://nginx.org/en/docs/http/server_names.html#regex_names ):
server { listen 80; listen 443; server_name ~^www\.(\w+)\.domain\.com$ location / { rewrite ^ $scheme://$1.domain.com$request_uri permanent; } }
马丁F的解决scheme都很好,直到你有数百个域名。 但是,我会build议以另一种方式 – 在www.joe.domain.com上提供应用程序,并从joe.domain.comredirect。 很确定这是在RFC中。