Merhaba
Bildiğiniz gibi SSL sertifikası olan projelerde htaccess ile http'den https yönlendirmesi yapıyoruz (PHP ile de yapılabilir, örneğin Laravel için konuşursak bir middleware ile halledilebilir ama tüm bağlantıların SSL olması istenirse htaccess daha iyi bir çözüm olacaktır). Özellike
Let's Encrypt (Ücretsiz SSL sertifikası) ile bu benim için bir standart oldu diyebilirim.
Böylece kullanıcının güvenli olmayan bağlantıda sitede gezinmesini engellemiş oluyoruz. Bunda şöyle bir sorun oluyor: yerel ortamda çalışırken bazen yerel bir SSL sertifikası kullanmadan çalışmak isteyebiliriz ve elbette yönlendirme olmasını istemeyiz. Bunun için .htaccess dosyasına şöyle bir işlem yapılabilir.
RewriteEngine On
# Yayındaki ortam elbette production
RewriteRule .* - [E=ENVIRONMENT:production]
# Ben yerel ortamda sanal alan adlarını .test olarak kullanıyorum. Yani kendi bilgisayarımda site http://benimsitem.test olarak çalışıyor
# O yüzden burada .test yazan kısmı kendi uzantınızla değiştirin.
# Bu kısımda alan adı .test ile bitiyorsa geliştirme ortamını local yapmış olduk
RewriteCond %{SERVER_NAME} .test$
RewriteRule .* - [E=ENVIRONMENT:local]
# Eğer geliştirme ortamı production ise tüm linkleri https'ye yönlendirelim. Burada elbette benimsitem.com yazan kısmı değiştiriyoruz.
RewriteCond %{ENV:ENVIRONMENT} production
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.benimsitem.com/$1 [R,L]
Bu durumda Laravel için .htaccess dosyamız şu şekilde olabilir. Ben bu şekilde kullanıyorum:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Yayındaki ortam elbette production
RewriteRule .* - [E=ENVIRONMENT:production]
# Ben yerel ortamda sanal alan adlarını .test olarak kullanıyorum. Yani kendi bilgisayarımda site http://benimsitem.test olarak çalışıyor
# O yüzden burada .test yazan kısmı kendi uzantınızla değiştirin.
# Bu kısımda alan adı .test ile bitiyorsa geliştirme ortamını local yapmış olduk
RewriteCond %{SERVER_NAME} .test$
RewriteRule .* - [E=ENVIRONMENT:local]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Eğer geliştirme ortamı production ise tüm linkleri https'ye yönlendirelim. Burada elbette benimsitem.com yazan kısmı değiştiriyoruz.
RewriteCond %{ENV:ENVIRONMENT} production
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.benimsitem.com/$1 [R,L]
</IfModule>