2011-07-27 27 views
9

htaccess dosyasımda ur.htaccess yardım, www, https zorlamak ve index.php kaldırmak gerekir

RewriteEngine on 
RewriteCond $1 !^(images|media|system|themes|_css|_js|favicon\.ico|robots\.txt|cert\.html|index\.php) [NC] 
RewriteRule ^(.*)$ /index.php/$1 [L] 

dizininden index.php dosyasını kaldıran bir rewrite var. Buna ek olarak, www ve https dosyalarını da içermeyen herhangi bir istek için zorlamak istiyorum.

Sonuç olarak, tüm URL'ler şöyle görünmelidir: https://www.example.com/whatever/something/; ve SEO amacıyla, bir url işareti özlüyorsa, 301'in doğru sürümüne yönlendirmesi gerekir, örneğin:

http://example.com/about/ 
301 redirect to 
https://www.example.com/about/ 

Bunu başarmak için bazı yardımları isterim, teşekkürler!

cevap

23

Kuvvet WWW:

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] # include 's' here to force ssl in addition to www 

Kuvvet SSL:

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 

Kaldır "index.php":

RewriteCond %{THE_REQUEST} /index.php HTTP 
RewriteRule (.*)index.php$ /$1 [R=301,L] 
+1

sayesinde bu ana kadar oldukça iyi çalışıyor gibi görünüyor. Ben tarayıcıda https://domain.com/ vurursanız sertifika yalnızca www içindir çünkü sertifika güvenilmeyen hatası alıyorum. Bunun etrafında bir yolu var mı? – mjr

+5

@mjr Hem “domain.com” hem de “www.domain.com” adreslerini ya da daha pahalı joker sertifikalarını (TÜM alt alanları kapsayacak şekilde) içeren sertifika alın. Maalesef güvenli kanal (SSL) Bir başka deyişle. Tekmelemek bağlantısı tamamen kurulana kadar kural yürütülen almazsınız yazabiliriz HTTPS HTTP bölümünden önce ilk kurulmamıştır. – LazyOne

+0

Bahşiş için teşekkürler. – mjr

İlgili konular