.htaccess Переадресовывать не WWW в WWW, сохраняя строку URI

Я запускаю платформу CodeIgniter, которая использует .htaccess для приема URL-адресов, таких как

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

В настоящее время я использую некоторые .htaccess-перезаписи, а именно (упрощенный):

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

Я хочу добавить правило перезаписи, которое перенаправляет все запросы без www на www. Я также хочу, чтобы строка URI, следующая за доменным именем, оставалась неизменной при перенаправлении. Например, если пользователь делает запрос на http://mysite.com/controller/function/argument , я хочу, чтобы файл .htaccess переписывал запрос в браузере как http://www.mysite.com/controller/function/argument а затем обработать запрос.

Это должно быть примерно так:

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

У меня была аналогичная проблема, и этот .htaccess работает для меня

 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] 

Если вы используете apache 2.4, вы можете использовать следующее простое перенаправление:

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