RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]# http to https
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
# non-www to www via https
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/ssl/certs/*.domain.pem;
ssl_certificate_key /etc/ssl/private/*.domain.pem;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
# Main configuration
server {
listen 443 ssl http2 default_server; # http2 нужен если вы хотите использовать HTTP/2, иначе не нужно
listen [::]:443 ssl http2 default_server; # http2 нужен если вы хотите использовать HTTP/2, иначе не нужно
server_name www.example.com;
ssl_certificate /etc/ssl/certs/*.domain.pem;
ssl_certificate_key /etc/ssl/private/*.domain.pem;
# Остальная конфигурация
...
}
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com;
root /var/www/example.com;
location / {
index index.php;
try_files $uri $uri/ /index.php?$args;
}
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_certificate /../fullchain.pem;
ssl_certificate_key /.../privkey.pem;
ssl_dhparam /.../ssl-dhparams.pem;
...
}
первый блок работает с протоколом http на 80м порту, второй - https на 443м. Каким образом первый блок переадресует httpS://example.com, который через 80й порт не проходит, от слова совсем?
ну я вижу, что вы коммент подредактировали (в первом блоке example.com отстутствовал у вас пару минут назад), но все же, мы по кругу возвращаемся к моему предыдущему комментарию
В вашем конфиге запросы на non-www HTTPS куда-то в пустоту проваливаются, их никто не слушает.
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com;
root /var/www/example.com;
location / {
index index.php;
try_files $uri $uri/ /index.php?$args;
}
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_certificate /../fullchain.pem;
ssl_certificate_key /.../privkey.pem;
ssl_dhparam /.../ssl-dhparams.pem;
...
}console:~# curl -i https://example.com
HTTP/2 301
location: https://www.example.com/
console:~# curl -i example.com
HTTP/2 301
location: https://www.example.com/
console:~# curl -i www.example.com
HTTP/2 301
location: https://www.example.com/
array_key_exists($word, $wordsFound) ? $wordsFound[$word] += count($matches) : $wordsFound[$word] = count($matches);