请教林大重定向规则问题
请教林大重定向规则问题
By qq99859874
at 2016-02-26
0人收藏 • 2265人看过
@lincanbin 想请教林大,您的程序中有现成的Apache的301规则,请问要如何实现像您站点一样将顶级域名301到www的二级域名上并且PC端手机端和API域名都强制由HTTP跳转HTTPS(已经部署了SSL证书并且可以正常HTTPS访问),我是Nginx1.9.11最新版本尝试HTTP2
- 登录后方可回帖
6 个回复 | 最后更新于 2016-02-26
server { listen 80; server_name domain.com m.domain.com api.domain.com ; #rewrite ^ https://$server_name$request_uri? permanent; rewrite ^(.*)$ https://$host$1 permanent; } server { #listen 80; listen 443 ssl http2; #listen [::]:80; ssl on; ssl_certificate /root/https.crt; ssl_certificate_key /root/https.key; server_name domain.com www.domain.com m.domain.com api.domain.com; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/domain.com;
如此已经解决了所有http连接跳转到https,但是不知如何在这个基础上将顶级域名跳转到www,尝试抄了if,结果发现m和api的二级域名都跳转到了www,求指导
回复#1 @qq99859874 :
.htaccess里预置了一段规则吧,被我注释掉了。
就是从不带www跳到带www的。
不过是Apache用的,Nginx照着翻译成Nginx的rewrite规则就是了。
#强制重定向从不带www到带www的域名 RewriteCond %{HTTP_HOST} ^94cb.com$ [NC] RewriteRule ^(.*)$ https://www.94cb.com/$1 [L,R=301] #For SSL RewriteCond %{HTTP_HOST} ^94cb.com$ [NC] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.94cb.com/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^m.94cb.com$ [NC] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://m.94cb.com/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^api.94cb.com$ [NC] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://api.94cb.com/$1 [L,R=301]
回复#2 @lincanbin :
百度了下不知如何翻译了,求林大指点
回复#3 @qq99859874 :
自己多看看就是了,写出来有问题再问我。
if ($http_host ~* "^94cb.com$"){ set $rule_0 1$rule_0; } if ($rule_0 = "1"){ rewrite ^/(.*)$ https://www.94cb.com/$1 permanent; }
感谢林大,已通过在线转换工具解决
回复#4 @lincanbin :
已解决咯,谢谢