2009-11-06 8 views
9

Je suis en cours d'exécution de la plate-forme CodeIgniter, qui .htaccess utilise pour accepter les URL comme.htaccess Rediriger non-WWW WWW préserver chaîne URI

http://www.mysite.com/controller/function/argument 

J'utilise actuellement quelques réécritures .htaccess, à savoir (simplifié):

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^(/index\.php|/images|/assets) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

Je souhaite ajouter une règle de réécriture qui redirige toutes les requêtes non www vers www. Je veux également que la chaîne d'URI suivant le nom de domaine reste la même dans la redirection. Par exemple, si un utilisateur fait une demande pour http://mysite.com/controller/function/argument, je veux que le fichier .htaccess réécrire la demande dans le navigateur comme http://www.mysite.com/controller/function/argument, puis traiter la demande.

Répondre

10

Il devrait être quelque chose comme ceci:

RewriteCond %{HTTP_HOST} . 
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 
+0

Ceci n'interférera pas avec ma deuxième RewriteRule droite? Je comprends votre RewriteCond, je ne veux pas appliquer aux règles que j'ai déjà. –

+0

Si vous ajoutez le mien comme premier, il ne sera activé que si l'hôte n'est pas www.mysite.com. Si elle est activée, il y aura une redirection HTTP, et la deuxième requête HTTP activera votre propre réécriture si les conditions sont remplies – rossoft

+0

Voir plus d'informations ici: http://www.webconfs.com/how-to-redirect- a-webpage.php – rossoft

14

J'ai eu un problème similaire, et ce .htaccess fonctionne pour moi

RewriteEngine On       

#This bit rewrites your host name to include www 
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,NC,L] 

#This bit does the codeigniter magic 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

ça marche. Que faire si je veux ajouter une règle sauf blog.exemple.com n'est pas redirigé vers www? – Permana

+0

essayez 'RewriteCond% {HTTP_HOST}!^(Www | blog) \. Example \ .com [NC]' – ekhaled

0

Si vous êtes sur apache 2.4, vous pouvez utiliser les éléments suivants simple redirection:

<if "%{HTTP_HOST} =='example.com'"> 
Redirect/http://www.example.com/ 
</if> 
Questions connexes