I am using nginx on Rackspace cloud following a tutorial and having searched the net and so far can't get this sorted.
I want www.mysite.com to go to mysite.com as normal in .htaccess for SEO and other reasons.
My /etc/nginx/sites-available/www.example.com.vhost config:
server {
listen 80;
server_name www.example.com example.com;
root /var/www/www.example.com/web;
if ($http_host != "www.example.com") {
rewrite ^ http://example.com$request_uri permanent;
}
I have also tried
server {
listen 80;
server_name example.com;
root /var/www/www.example.com/web;
if ($http_host != "www.example.com") {
rewrite ^ http://example.com$request_uri permanent;
}
I also tried. Both the second attempts give redirect loop errors.
if ($host = 'www.example.com' ) {
rewrite ^ http://example.com$uri permanent;
}
My DNS is setup as standard:
site.com 192.192.6.8 A type at 300 seconds
www.site.com 192.192.6.8 A type at 300 seconds
(example IPs and folders have been used for examples and to help people in future). I use Ubuntu 11.
You may find out you want to use the same config for more domains.
Following snippet removes www before any domain:
not sure if anyone notice it may be correct to return a 301 but browsers choke on it to doing
is faster than:
try this
Other way: Nginx no-www to www
and www to no-www
I combined the best of all the simple answers, without hard-coded domains.
301 permanent redirect from non-www to www (HTTP or HTTPS):
If you prefer non-HTTPS, non-www to HTTPS, www redirect at the same time:
Here's how to do it for multiple www to no-www server names (I used this for subdomains):