请教林大重定向规则问题
请教林大重定向规则问题
By qq99859874
at 2016-02-26
0人收藏 • 2540人看过
@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 :
已解决咯,谢谢