Ще разгледаме два варианта. При използване на Apache и NGINX.
Темата е сравнително лесна. Целта е когато се обърнем към сайта по 80 порт или казано по протокола HTTP, то той автоматично да се пренасочва към порт 443 или протокол HTTPS. Отново имаме два варианта. Първия е да използваме файл наречен .hthtaccess. А другия вариант е чрез конфигуриране на виртуалните хостове.
Ако използвате споделен хостинг или нямате достъп до основните конфигурационни файлове, добавете следния код в началото на вашия .htaccess файл в главната директория на сайта:
nano ./htaccess RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Флагът R=301 указва на търсачките, че пренасочването е постоянно, което е полезно за SEO.' Освен това модулът mod_rewrite трябва да е зареден в Apache.
Този метод е по-бърз и сигурен, тъй като не изисква сървърът да чете .htaccess файла при всяка заявка. Отворете конфигурационния файл на вашия сайт (обикновено в /etc/apache2/sites-available/) и добавете следната секция за порт 80:
nano /etc/apache2/sites-available/example.com.conf <VirtualHost *:80> ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ </VirtualHost>
След промяната Apache трябва да се рестартира.
systemctl restart apache2
За да пренасочите целия HTTP трафик към HTTPS в Nginx, най-ефективният и препоръчителен метод е чрез използване на отделен server блок с директивата return 301.
Ако искате да пренасочите целия трафик на порта 80, добавете следния блок в конфигурационния си файл (обикновено /etc/nginx/nginx.conf или /etc/nginx/sites-available/default)
nano /etc/nginx/sites-available/default server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://$host$request_uri; }
nano /etc/nginx/sites-available/example.com.conf server { listen 80; server_name example.com www.example.com; # Заменете с вашия домейн # Пренасочва всички HTTP заявки към HTTPS версията на същия URL return 301 https://$host$request_uri; } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; # Останалата част от конфигурацията на сайта... } nginx -t systemctl reload nginx