nginx:正则expression式不能在URL重写

我有http://sample.cervo02.com 。 我正在尝试获取https://cervo02.com/sample

我试过几个redirect他们都没有工作。 rewrite ^([^.]*)$ https://cervo02.com/$1 last; 返回https://cervo02.com//

另一个是rewrite ^([^.]*).cervo02.com$ https://cervo02.com/$1 last; 返回一个404和URL不会被重写

完整的服务器主机定义

 upstream backend { server 192.167.1.79:8080; } proxy_cache_path /tmp/cache levels=1:2 keys_zone=my-test-cache:8m max_size=5000m inactive=300m; server { listen 80; server_name sample.CERVO02.com; rewrite ^([^.]*)$ https://cervo02.com/$1 last; } server { listen 443 ssl spdy; server_name CERVO02.com; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; location / { proxy_pass http://backend;# backend c'est pas une variable proxy_cache my-test-cache; proxy_cache_valid 200 302 60m; proxy_cache_valid 404 1m; proxy_cache_use_stale error timeout invalid_header updating; proxy_redirect default; } } 

任何帮助,欢迎再次感谢。

rewrite指令regex将匹配标准化的请求URI,server_name指令将匹配域名。 last标志将强制内部redirect,这不是你想要的。

所以你做错了。

用这个代替:

 server { listen 80; server_name "~^(?<subdomain>[^.]*)\.?cervo02.com$"; return 301 https://cervo02.com/$subdomain; }