@Tomc ‘s solution is a great start. Here it is formatted (you can’t format things in a comment).
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
In addition, I’m not a fan of setting URLs in the configuration files. Best (IMHO) to set those two values in the wp-options table.
You might need to look at the entire database to ensure that all references to internal assets (especially media) is set to https . There are several plugins that allow you to search (and replace) items in the database – my go-to is the “Better Search and Replace” plugin.
You can use the Developer tools in your browser (usually F12) to see all requests, and find those that are not https.
Added
Here’s a rewrite rule for forcing SSL, plus WordPress basic. Change domain name to match yours.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress