2009-11-06 16 views
9

estoy corriendo la plataforma CodeIgniter, que utiliza .htaccess para aceptar direcciones URL como.htaccess Redireccionar no WWW WWW preservar URI cadena

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

Actualmente utilizo algunas reescrituras .htaccess, a saber (simplificado):

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

quiero añadir una regla de reescritura que redirige todas las peticiones no www a www. También quiero que la cadena de URI que sigue al nombre de dominio permanezca igual en el redireccionamiento. Por ejemplo, si un usuario hace una solicitud para http://mysite.com/controller/function/argument, quiero que el archivo .htaccess reescriba la solicitud en el navegador como http://www.mysite.com/controller/function/argument y luego procese la solicitud.

Respuesta

10

Debe ser algo como esto:

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

Esto no interferirá con mi segunda RewriteRule ¿verdad? Entiendo tu RewriteCond, no quiero aplicar a las reglas que ya tengo. –

+0

Si agrega el mío como el primero, solo se activará si el host no es www.misitio.com. Si está activado, habrá una redirección HTTP, y la segunda consulta HTTP activará su propia reescritura si se cumplen las condiciones – rossoft

+0

Ver más información aquí: http://www.webconfs.com/how-to-redirect- a-webpage.php – rossoft

14

tuve un problema similar, y esto .htaccess que funciona para mí

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

está funcionando. ¿Qué ocurre si deseo agregar una regla, excepto que blog.example.com no se redirecciona a www? – Permana

+0

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

0

Si usted está en Apache 2.4, puede utilizar el siguiente simple redirección:

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