htaccess force www and https

I am having trouble getting my htaccess to redirect the website to both www and https… I have tried adding snippets that I have found in previous posts but the best I can get it to do is only redirect correctly on the homepage, not the others…

Here is the full htaccess

order deny,allow
deny from all
allow from env=allowclient
SetEnvIf X-Cluster-Client-Ip 192.88.134.3 allowclient
SetEnvIf X-Cluster-Client-Ip 192.88.135.3 allowclient
SetEnvIf X-Cluster-Client-Ip 185.93.228.3 allowclient
SetEnvIf X-Cluster-Client-Ip 185.93.229.3 allowclient
SetEnvIf X-Cluster-Client-Ip 185.93.230.3 allowclient
SetEnvIf X-Cluster-Client-Ip 192.88.134.0/23 allowclient
SetEnvIf X-Cluster-Client-Ip 185.93.228.0/22 allowclient
SetEnvIf X-Cluster-Client-Ip 192.124.249.0/24 allowclient
SetEnvIf X-Cluster-Client-Ip 199.223.236.179 allowclient
SetEnvIf X-Cluster-Client-Ip 146.148.117.213 allowclient
SetEnvIf X-Cluster-Client-Ip 23.251.134.134 allowclient
SetEnvIf X-Cluster-Client-Ip 178.33.238.180 allowclient
SetEnvIf X-Cluster-Client-Ip 142.4.217.0/24 allowclient
SetEnvIf X-Cluster-Client-Ip 167.114.0.0/24 allowclient
SetEnvIf X-Cluster-Client-Ip 192.99.17.0/24 allowclient
SetEnvIf X-Cluster-Client-Ip 5.196.79.0/24 allowclient
SetEnvIf X-Cluster-Client-Ip 130.211.0.0/16 allowclient
SetEnvIf X-Cluster-Client-Ip 104.155.0.0/16 allowclient

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^index.php$ - [L]
RewriteRule ^static/lib/(.*) /wp-includes/$1?p_hide_my_wp=soloshotfirst [QSA,L]
RewriteRule ^file/(.*) /wp-content/uploads/$1?p_hide_my_wp=soloshotfirst [QSA,L]
RewriteRule ^static/ext/(.*) /wp-content/plugins/$1?p_hide_my_wp=soloshotfirst [QSA,L]
RewriteRule ^static/(.*) /wp-content/themes/tc/$1?p_hide_my_wp=soloshotfirst [QSA,L]
RewriteRule ^enfold/(.*) /wp-content/themes/enfold/$1?p_hide_my_wp=soloshotfirst [QSA,L]
RewriteRule ^static_main/(.*) /wp-content/themes/enfold/$1?p_hide_my_wp=soloshotfirst [QSA,L]
RewriteRule ^ajax /wp-admin/admin-ajax.php?p_hide_my_wp=soloshotfirst [QSA,L]
RewriteRule ^wp-content/themes/tc/screenshot.png|readme.html|license.txt|wp-content/debug.log|wp-includes/$ /nothing_404_404?p_hide_my_wp=soloshotfirst [QSA,L]
RewriteRule ^(((wp-content|wp-includes)/([A-Za-z0-9-_/]*))|(wp-admin/(!network/?)([A-Za-z0-9-_/]+)))(.txt|/)$ /nothing_404_404?p_hide_my_wp=soloshotfirst [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>

# END WordPress

<FilesMatch ".(ttf|otf|woff)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>

Related posts

2 comments

  1. Use (after RewriteBase /):

    RewriteCond %{HTTP_HOST} !^www. [NC]
    RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
    

    Only one redirect with or without www

  2. Try this.

    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www.
    RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    

Comments are closed.