www to non-www .htaccess not working - html

EDIT: The problem was that the domain was purchased at GoDaddy, but hosted at Endurance Internation Group (they own Hostgator and a few other small web hosts). Endurance doesn't have mod_rewrite activated by default, which is why this wasn't working.
I have hosted the site on GoDaddy and now everything works 100%.
I have a website that Google is indexing the www and non-www version of. I only want the non-www version. This is my current .htaccess code. The 301 redirects of individual files at the bottom work, but the www to non-www code at the top does not work.
What am I doing wrong?
RewriteEngine On
RewriteBase /
RewriteCond % ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
# Redirect old file path to new file path
Redirect 301 /aboutcarytreeservice.html http://example.com/about.html
Redirect 301 /carytreeservice.html http://example.com/services.html
Redirect 301 /treeremovaldurhamnc.html http://example.com/durham.html
Redirect 301 /treeservicedurhamnc.html http://example.com/durham.html
Redirect 301 /treeremovalraleighnc.html http://example.com/

This condition is wrong:
RewriteCond % ^www.example.com [NC]
change it to:
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]

Try this:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
It will look to see if there is a "www" in the URL and cause a 301 redirect to the same URL (with "www" added) if it is not.

Related

Strange behavior of the htaccess redirection with www and slash

I make an analyse of the site and was faced with a problem in htaccess redirection. It is a strange, I did it many times before and had never the problem like this.
So, I try to just redirect my domen to without www and shash:
ErrorDocument 404 /404.html
RewriteEngine On
RewriteBase /
rewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://domen.com/$1 [R=301,L]
And also I remove the slash at the end of url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
And after this I make a redirect from non-existing or unused page to 404 error:
RedirectMatch 404 ^/non-existing-page$ or ^/non-existing-page/$
When I type in the browser http://www.domen.com/non-existing-page (with www) or http:domen.com/non-existing-page (with slash) a have the same url with 404 error code and 404 html code. It's all right.
But if I write the url http://www.domen.com/non-existing-pag/ (with www and shash) I'm redirected to 404.html page with the 200 - no error code.
What's wrong?
At the start of .htaccess I have only
<IfModule mod_speling.c>
CheckSpelling on
</IfModule>
That's all.

.htaccess http to https not working

despite searching for previous answers, I couldn't see one which addresses my issue, so hope someone can help?
I recently redirected an old html company site to a new wordpress site with .htaccess rules (obvs different domain)
however, shortly afterwards I updated the new domain with an ssl cert. The old site was just a regular http:
I changed the .htaccess rules for the https: but obvs I have done it incorrectly as the redirect does not work.
this is what I am using.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain.co.uk$ [OR]
RewriteCond %{HTTP_HOST} =www.old-domain.co.uk
RewriteRule (.*) https://newdomain.com$1 [R=302,L]
</IfModule>
what do I need to change to have it redirect correctly?
thanks for your assistance.
I prefer this variant for redirecting from http to https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Also there are a lot of plugins for wordpress that help with that. They also help with redirecting all request to resources (images etc) to https
It works for me.
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]

htaccess why is site redirecting to //

In my htaccess I am redirecting all non https to https.
It works, but its also adding in an extra '/', so the url is
'https: //www.[MY SITE URL].co.uk//'
Why is this? To be honest, I don't really know what all this in my htaccess is doing, its copied from googling answers to 'redirect all requests to https'
My htaccess:
Options -MultiViews
RewriteEngine On # Turn on the rewriting engine
RewriteBase /
#RewriteCond %{HTTP_HOST} ^(www\.)?jobooz\.com [NC]
#RewriteRule ^(.*)$ https://www.jobooz.co.uk/$1 [R=301,L,NC]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}/$1
RewriteRule ^/?$ /php/index.php [NC,L] # Home page
I've also noticed any deeper urls like '/search-jobs/jobs-near-me' that I add to the url then get duplicated too, to '/search-jobs/jobs-near-me/search-jobs/jobs-near-me' when redirected to https.
All urls work fine if I go directly to the https version.
Any help appreciated, thanks.
The following rewrite rule has a problem:
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}/$1 [R=301,L]
The gist of why you are seeing repeated fragments in the rewritten URL is that (.*) matches everything, and that already includes the host and URI. Instead, you can try redirecting any incoming request on port 80 to HTTPS.
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

https and http redirection

I have bought a domain, a dedicated IP and ssl certificate. I want to do this -
I want to redirect all these urls -
http://webs.agency/
http://www.webs.agency/
https://webs.agency/
to https://www.webs.agency/
and the same should be done for all internal pages for example -
http://webs.agency/web-design.html
http://www.webs.agency/web-design.html
https://webs.agency/web-design.html
to https://www.webs.agency/web-design.html
How it can be done via .htaccess.
I have contacted the hosting company and they said they can't help me in this regard.
So you want to force WWW and HTTPS on everything.
RewriteEngine On
#Force WWW on everything
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#Force HTTPS on everything
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
This should leave you with both https://www.webs.agency/ and https://www.webs.agency/web-design.html

.htaccess conditional redirect https to http

I'm trying to make all https requested to my site route to http EXCEPT for anything at /shop
Using the following code in my .htaccess but it's not working:
#redirect all https traffic to http, unless it is pointed at /shop
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/shop/?.*$
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L]
Hosted on rackspace cloud sites.
Other code in .htaccess
RewriteEngine on
RewriteBase /
# Shop rewrite rule + remove trailing slash
RewriteRule ^shop\/(.*)/$ shop/$1 [R=301,L]
RewriteRule ^shop\/([A-Za-z0-9-/]+)$ shop.php?shop=$1 [NC,L,QSA]
DirectoryIndex index.php index.html index.htm