1

I'm losing link juice in multiple redirects.

I need to redirect all domain versions to my default domain i.e.

https://example.com

By all domain versions I mean http://www, http://, https://www and https://. (index.php for all.)

I am currently using the code below. All domains are redirecting to https:// but not directly. If I type http://www, it will be redirected 3 times as in the picture. I still need to redirect index.php.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

I am using "Redirect Path" extension of Google Chrome browser to monitor the redirects.

You can see redirect 3 times:

You can see redirect 3 times

You can see redirect 2 times:

You can see redirect 2 times

2
  • 1
    The code you posted actually looks "OK" - you should only be seeing a single redirect with that code. However, you might be seeing a cached response - so ensure all intermediary caches are cleared. (I just tried your domain and it seems to redirect OK for me.) ...?
    – MrWhite
    Dec 17, 2016 at 15:12
  • I think you've probably resolved it... Your <VirtualHost *:443> code snippet (in the comment, now deleted) appeared to have the wrong ServerName defined (example.com instead of www.example.com), which would have resulted in a redirect loop. If you are going the VirtualHost route then Tom's answer looks good as far as I can see.
    – MrWhite
    Dec 20, 2016 at 12:03

1 Answer 1

2

Try using more VirtualHosts and redirecting instead of doing rewrites.

<VirtualHost *:80>

  ServerName example.com
  ServerAlias www.example.com
  Redirect permanent / https://www.example.com/

</VirtualHost>

<VirtualHost *:443>

  ServerName www.example.com
  Redirect permanent / https://example.com/
  ...
  (put your HTTPS config & path to certs here for the redirect to work)

</VirtualHost>

<VirtualHost *:443>

  ServerName example.com
  ...
  (This is your destination VirtualHost)

</VirtualHost>
3
  • thank you so much for out of the box answer. I don't have the SSH access but only WHM and Cpanel. Can i still use this code? Dec 17, 2016 at 10:45
  • 1
    "...redirecting instead of doing rewrites." - Just to clarify, the OPs code is using redirects, it's just using mod_rewrite and not mod_alias. VirtualHost/Redirect is preferable, but you do need access to the server config and since the question is tagged htaccess I guess that's not the case.
    – MrWhite
    Dec 17, 2016 at 11:35
  • thanks @w3dk i am in cpanel/whm environment. Should i just find the conf file and add below code or Cpanel must have created these virtualhosts entries because HTTPS is already working on my domains/vps. Dec 17, 2016 at 13:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.