Nginx ve Apache'de HTTP'yi HTTPS'ye Nasıl Yönlendirebilirim?
Google, arama sonuçlarında görüntülenen sayfanın URL'sini değiştirmek için 301 Yönlendirme kullanılmasını önerir. Bu, arama motorlarının ve kullanıcıların doğru sayfaya yönlendirilmesini sağlamanın ve ayrıca kendilerini arama motorlarından gelen trafik kaybından korumanın en iyi yoludur.
Hangi durumlarda 301 yönlendirmesi kullanmaya değer?
- Farklı alt etki alanlarında veya klasörlerde birkaç özdeş sürüm varsa, örneğin, ziyaretçiyi ana sayfaya yönlendirmek için http://domain.site.tld veya http://site.tld veya httpS://domain.site.tld sitenin versiyonu.
- Yeniden markalama nedeniyle (veya başka nedenlerle), kullanıcıların aynı URL'yi tıkladıklarında farkı fark etmemesini istediğinizde. İki siteyi yapıştırırken (birleştirirken), böylece ilk sayfanın tüm sayfalarından gelen bağlantılar yenisine yönlendirilir.
Apache'de 301 Yönlendirmesi HTTP'den HTTPS'ye nasıl yapılandırılır
Normalde, bir SSL sertifikası kullanırken kullanımda olan en az iki sanal ana bilgisayar vardır. Sıradan sunucu istekleri 80 numaralı bağlantı noktası ve SSL istekleri 443 numaralı bağlantı noktası tarafından sunulmalıdır. Kullanıcıları SSL olmayan sitelerden SSL sitesine yönlendirmek istiyorsanız normal yeniden yönlendirme yönergesini kullanın. Apache kullanarak yeniden yönlendirmeyi etkinleştirmek için mod_rewrite'ı etkinleştirmelisiniz:
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Değişikliklerin etkili olması için Apache web sunucusunu yeniden başlatırsınız:
apache2ctl restart
HTTP'den HTTPS'ye yönlendirmek için .htaccess'te şunu ekleyin:
<VirtualHost *:80> RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] </VirtualHost>
Dosyayı kaydedip kapatın, ardından sonraki komutu kullanarak HTTP sunucusunu yeniden başlatın:
$ sudo systemctl restart apache2 [Ubuntu/Debian]
$ sudo systemctl restart httpd [RHEL/CentOS]
Tüm web sitesi yerine bir sayfa yönlendirmesi
<VirtualHost *:80> RewriteEngine On RewriteRule ^apache-redirect-http-to-https.html$ https://www.domain.tld/apache-redirect-http-to-https.html [R=301,L] </VirtualHost>
.htaaccess yönlendirmeleri hakkında ipuçları
- RewriteEngine On'u çoğaltmayın;
- RewriteCond ve RewriteRule, RewriteEngin on/
NGNIX, HTTP'den HTTPS'ye yönlendirme
Tüm ziyaretçilerinizi WWW alan öneki ile HTTPS'ye yönlendirmek için bu öğreticiyi kullanın. Bu yöntem 301 yönlendirme tekniklerini kullanır ve Google'ın en iyi uygulamalarına göre SEO için güvenlidir. Aşağıda açıklanan örneği kullanarak tüm kullanıcıları HTTPS://www.domain.tld adresine zorla yönlendirmek için Nginx sanal ana bilgisayar yapılandırma dosyasını düzenlemeniz gerekecektir.
# Tüm kullanıcıları https://www.domain.tld adresine zorla
# Force all users to https://www.domain.tld server { listen 80; server_name domain.tld www.domain.tld; return 301 https://www.domain.tld$request_uri; } server { listen 443 ssl; server_name domain.tld; ssl_certificate /etc/nginx/ssl/www.domain.tld.pem; ssl_certificate_key /etc/nginx/ssl/www.domain.tld.key; return 301 https://www.domain.tld$request_uri; } server { listen 443 ssl; server_name www.domain.tld; root /var/www/html error_page 403 /error/404.html; error_page 404 /error/404.html; error_page 500 502 503 504 /error/50x.html; ssl_certificate /etc/nginx/ssl/www.domain.tld.pem; ssl_certificate_key /etc/nginx/ssl/www.domain.tld.key; }
Değişiklikleri şu komutu kullanarak yürürlüğe koymak için Nginx web sunucusunu yeniden başlatın:
sudo systemctl restart Nginx
Çözüm
Bugün, web sitenizin ziyaretçileri ile sunucu arasındaki tüm trafiği korumak için HTTPS protokolünü kullanmak zorunludur. Web sitenizi kalıcı 301 yönlendirmeleriyle kurmanın en güçlü ve en basit yolu olarak Nginx web sunucusunu öneriyoruz.