Nginx服务器重写路径
腾讯云的备案因为在考试当中漏接了管局的电话没有获得通过——无语。
想着先凑合用着,但是在lnmp vhost add
后我发现
原有的rewrite重写能够实现去www和https的双重跳转完全是一个巧合
server_name sstu.cc haveacafe.cn; #强制http跳转到https #return 301 https://$host$request_uri; #强制不加www,顺便跳转https if ( $host != 'sstu.cc' ) { rewrite ^/(.*)$ https://sstu.cc/$1 permanent; } if ( $host != 'haveacafe.cn' ) { rewrite ^/(.*)$ https://haveacafe.cn/$1 permanent; }
这其中由于我的网站绑定了两个域名,而!=
的非判定导致了Nginx做出了一个双重判定,而一旦只添加一个域名时,
server_name sstu.cc www.sstu.cc; #强制不加www,顺便跳转https if ( $host != 'sstu.cc' ) { rewrite ^/(.*)$ https://sstu.cc/$1 permanent; }
两个!=
的效果消失,在输入sstu.cc的时候就无法跳转到https,故而在只是用一个域名时,应当采用如下的rewrite
server_name sstu.cc www.sstu.cc; #强制不加www,顺便跳转https if ( $host = 'sstu.cc' ) { rewrite ^/(.*)$ https://sstu.cc/$1 permanent; } if ( $host = 'www.sstu.cc' ) { rewrite ^/(.*)$ https://sstu.cc/$1 permanent; }