SSL ve www'yi .htaccess'te zorlama


13

SSL ve zorlamak için bir yol arıyorum www.

Her ikisini de ayrı ayrı zorlayabildim, ancak birlikte yeniden yönlendirme sorunlarıyla karşılaşıyorum. Aşağıdaki kod, bu biçimdeki bir URL'yi işlerken çalışır: http://example.comve düzgün bir şekilde yeniden yönlendirir, https://www.example.comancak gelen URL olduğu https://example.comzaman iletilmeyecektir https://www.example.com- Herhangi bir öneriniz var mı?

EDIT: Ayrıca göndermeniz http://www.example.comgerekir https://www.example.com.

RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Yanıtlar:


7

İlk satır, dahili URL'lerin yeniden yazılmasını önlemek için kullanılır. Bu, farklı sayfaların görüntülenmesine neden olabilir, bu yüzden kaldırdım.

Ana bilgisayar example.comHTTPS üzerinden istenirse veya istenmezse, yeniden yazılır https://example.com/. Yani, bu yeniden yazar http://example.com, http://www.example.comve https://example.comhiç https://www.example.combir eylem.

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Apache 2.2 için mod_rewrite belgeleri .

Gibi alt alan adlarınız varsa forum.example.com, ilk kural olduğu gibi olmalıdır. Aksi takdirde, olumsuz bir eşleşme www.example.comde yapabilirsiniz.



0

Bunu dene:

RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

0

Kullandığım ve kusursuz çalıştığım aşağıdaki satırları da kullanabilirsiniz.

(CloudFlare kullanmıyorsanız üst RewriteCond'u kaldırın)

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

0

Sadece sitem için uyguladı. Tıkır tıkır çalışıyor! .Htaccess dosyamın üstüne eklendi. Www, http veya https yazıp yazmadığına ilişkin tüm kişileri yeniden yönlendirir.

# BEGIN HTTPS Redirect
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
# END HTTPS Redirect

0

Yukarıda verilen tüm önerileri test ettim, ancak hiçbiri tüm senaryoyu kapsamıyordu.

Tüm ziyaretçilerin gitmesini istedim https://www.example1.com/

Diğer kullanıcılar tarafından sağlanan bazı kodlar güvenli olmayan ve / veya www olmayan URL'leri almaya çalıştı https://www.example1.com/, ancak hiçbiri https://example1.com"www" biçimine dönüştürülmeyecek şekilde kaplandı .

Web sitem GoDaddy ile barındırılıyor, bunun herhangi bir fark yaratması durumunda.

Bu benim için çalışan kod:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www.example1\.com$ [OR]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example1.com/$1 [L,R=301]

Son satır da olabilir:

RewriteRule ^(.*)$ https://www.example1.com/$1 [R,L]

Ancak Google ve belki de diğer arama motorlarının eski bağlantıları güncelleyeceği umuduyla " kalıcı olarak taşındı " iletisini göndermek için "301" kodunu kullandım .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.