2009-02-20 8 views
5

Ho un certificato SSL per il sottodominio 'www' di un sito web che chiameremo esempio.com.Forzare SSL e sottodominio www per qualsiasi URI inserito con .htaccess?

Pertanto, posso forzare SSL, ma se l'utente non immette "www.esempio.it" nel proprio browser, il certificato SSL non è valido.

Desidero eseguire questo con le regole mod_rewrite in un file .htaccess nella radice del sito web.

Non importa quale sia URI l'utente inserisce, (ad esempio example.com, www.example.com, https://example.com, example.com/folder/file.html, ecc), voglio forzare la HTTPS e la sottodominio www, mantenendo ovviamente l'URI fornito.

Stavo giocando con il file .htaccess e alcune regole, come ho già fatto alcune ricerche, ma non ho molta esperienza con mod_rewrite o .htaccess. Penso di aver trovato la revisione SVN che il ha funzionato quasi per me, ma non del tutto. Eccolo:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
RewriteCond %{HTTP_HOST} ^example.com [nc] 
RewriteRule ^(.*)$ https://www.example.com/$1 [r=301,nc] 

Cerca di non ridere troppo al mio file; è per lo più derivato da esempi che ho trovato online.

Qualsiasi suggerimento è apprezzato! =)

+0

http://no-www.com/ – ceejayoz

+0

anche: utilizzare example.com ad esempio i domini (fisso per voi) –

risposta

3

Prova questo:

RewriteCond %{HTTPS} !on [OR] 
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
RewriteRule^https://www.example.com%{REQUEST_URI} [R=301] 
+0

modificati rispetto l'originale (che aveva% {HTTP_HOST} nella riga RewriteRule, che vedo che hai già risolto) funziona alla grande: RewriteRule^https: //www.example.com% {REQUEST_URI} [R = 301] – Alex