Лучшее решение зависит от ваших требований. Это резюме ранее опубликованных ответов с некоторым добавленным контекстом.
Если вы работаете с веб-сервером Apache и можете изменить его конфигурацию, следуйте документации Apache :
ServerName www.example.com
Redirect "/" "https://www.example.com/"
ServerName www.example.com
# ... SSL configuration goes here
Но вы также спросили, можете ли вы сделать это в файле .htaccess
. В этом случае вы можете использовать RewriteEngine от Apache :
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
. Если все работает нормально и вы хотите, чтобы браузеры помнили это перенаправление, вы можете объявить его постоянным, изменив последнее line to:
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Но будьте осторожны, если вы можете передумать в этом перенаправлении. Браузеры помнят его в течение очень долгого времени и не будут проверять, не изменилось ли оно.
В зависимости от конфигурации веб-сервера вам может не понадобиться первая строка RewriteEngine On
.
Если вы посмотрите для решения PHP рассмотрим массив $ _ SERVER и функцию заголовка :
if (!$_SERVER['HTTPS']) {
header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}