Имеется вот такой виртуальный хост:
server {
server_name site.ru m.site.ru www.site.ru www.m.ste.ru;
...
}
Нужно сделать редирект http->https только для site.ru и для www.site.ru, но не для m.site.ru и www.m.site.ru:
set $flag A;
}
if ($host != m.site.ru) {
set $flag "${flag}B";
}
if ($scheme = http) {
set $flag "${flag}C";
}
if ($flag = ABC) {
return 301 https://$server_name$request_uri;
}
В .htaccess у меня прописан редирект с www на non-www:
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.m.site.ru$ [NC]
RewriteRule ^(.*)$ http://m.site.ru/$1 [R=301,L]
Проверка:
$ curl -I http://site.ru --silent | grep Loca
Location: https://site.ru/
$ curl -I http://www.site.ru --silent | grep Loca
Location: http://site.ru/
$ curl -I http://www.m.site.ru --silent | grep Loca
Location: http://m.site.ru/
$ curl -I http://m.site.ru --silent | grep Loca
$
server {
server_name site.ru m.site.ru www.site.ru www.m.ste.ru;
...
}
Нужно сделать редирект http->https только для site.ru и для www.site.ru, но не для m.site.ru и www.m.site.ru:
set $flag 0;
if ($host = site.ru) {set $flag A;
}
if ($host != m.site.ru) {
set $flag "${flag}B";
}
if ($scheme = http) {
set $flag "${flag}C";
}
if ($flag = ABC) {
return 301 https://$server_name$request_uri;
}
В .htaccess у меня прописан редирект с www на non-www:
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.m.site.ru$ [NC]
RewriteRule ^(.*)$ http://m.site.ru/$1 [R=301,L]
$ curl -I http://site.ru --silent | grep Loca
Location: https://site.ru/
$ curl -I http://www.site.ru --silent | grep Loca
Location: http://site.ru/
$ curl -I http://www.m.site.ru --silent | grep Loca
Location: http://m.site.ru/
$ curl -I http://m.site.ru --silent | grep Loca
$
Комментариев нет:
Отправить комментарий