htaccess why is site redirecting to // - html

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]

Related

How do you use htaccess to redirect requests to a folder to a new subdomain?

I am moving an application from a folder off the root, to a subdomain. So I need requests to website.com/folder to redirect to folder.website.com. Below is what I tried, but it adds the original folder to the URL. For example, it does folder.website.com/folder/login, but what I need is folder.website.com/login.
RewriteCond %{HTTP_HOST} ^(www\.)?website\.com
RewriteRule ^folder/(.*)$ https://folder.website.com/$1 [L,QSA,R=301]
If you need this rule to only be applied to the folder route, then give the following a try replacing the following rule:
RewriteCond %{HTTP_HOST} ^(www\.)?website\.com
RewriteRule ^folder/(.*)$ https://folder.website.com/$1 [L,QSA,R=301]
WITH
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^website.com [NC]
RewriteRule ^(.*)$ http://www.website.com$1 [L,R=301]
RedirectMatch 301 ^/folder/(.*)$ https://folder.website.com/$1
You may already have the first 2 lines added.

.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]

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

difference between www.xyz.com and xyz.com and how to redirect .htaccess

I have a site and am using Google Webmaster tool. I created the setting within the tool for the site twice: once as www.xyz.com and once as xyz.com. The statistics from both are different once I drill down into details.
I want to stick with www.xyz.com. How can I make everyone go to xyz.com be redirected to www.xyz.com? and will this harm my ranking or indexing in google?
regards,
sorry if the question is simple :)
with htaccess, i use the following for forced www
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [L,R=301]
although you might be best doing the following if if it is for SEO purposes
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.htm
RewriteRule ^(.*)index.htm$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/home.htm
RewriteRule ^(.*)home.htm$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/home.html
RewriteRule ^(.*)home.html$ http://%{HTTP_HOST}/$1 [R=301,L]
as this also removes any index or home page part of the url.
in webmaster tools in settings, you can also select always use www, which will merge the data for both domains under a single www domain (although you will be able to see both www and non-www listed in GWMT)
Use preffered domain, more instructions here:
http://support.google.com/webmasters/bin/answer.py?hl=en&answer=44231
Specify a preferred domain:
On the Webmaster Tools Home page, click the site you want.
Under Site configuration, click Settings.
In the Preferred domain section, select the option you want.
You could also use 301 redirect:
http://support.google.com/webmasters/bin/answer.py?hl=en&answer=93633