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

  • 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 '16 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 '16 at 12:03
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>
  • 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? – muhammad usman Dec 17 '16 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 '16 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. – muhammad usman Dec 17 '16 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.