Reputation: 18014
I'm running the CodeIgniter platform, which uses .htaccess to accept URLs like
http://www.mysite.com/controller/function/argument
I currently use some .htaccess rewrites, namely (simplified):
RewriteEngine On
RewriteCond %{REQUEST_URI} !^(/index\.php|/images|/assets)
RewriteRule ^(.*)$ /index.php/$1 [L]
I want to add a rewrite rule that redirects all non www requests to www. I also want the URI string following the domain name to stay the same in the redirect. For instance, if a user makes a request for http://mysite.com/controller/function/argument
, I want the .htaccess file to rewrite the request in the browser as http://www.mysite.com/controller/function/argument
and then process the request.
Upvotes: 9
Views: 9462
Reputation: 41219
If you are on apache 2.4 ,You can use the following simple redirect :
<if "%{HTTP_HOST} =='example.com'">
Redirect / http://www.example.com/
</if>
Upvotes: 0
Reputation: 2182
It should be something like this:
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
Upvotes: 10
Reputation: 2930
I had a similar problem, and this .htaccess works for me
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]
Upvotes: 14