У меня есть приложение Codeigniter, которое было разработано и протестировано на обычном http. Недавно мы перешли на SSL-сертификат, и все страницы веб-сайта не перенаправляются должным образом в .htaccess. Это сделано только для главной страницы http://grdagrd.com/ . но это не работает для других страниц: Плотина Сонбол Роуд
Как включить HTTPS для всего трафика и всех страниц для базового URL https://grdagrd.com/?
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^([\s\S]*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Ваше мышление было правильным для решения проблемы, но регулярное выражение НЕ было правильным. Нам НЕ нужно сопоставлять все здесь, так как весь URL-адрес нам нужно изменить на https
, следовательно, .*
будет работать при переписывании правила. Не могли бы вы попробовать следовать, если у вас есть какие-либо другие правила, оставьте эти правила в самом начале/начале файла .htaccess. Если RewriteCond %{HTTPS} !on
не работает, измените его на RewriteCond %{HTTPS} off
. Пожалуйста, убедитесь, что вы очистили кеш вашего браузера, прежде чем тестировать URL-адреса.
RewriteEngine ON
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L]
С показанным OP .htaccess это может быть следующим образом: это простая копия / вставка из вопроса OP + комбинации моих правил, поскольку я не уверен, что именно OP имеет дело с другими правилами (более того, это тоже вне фокуса вопроса) .
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\s\S]*)$ /index.php [L,B,QSA]
</IfModule>
После установки SSL-сертификата ваш сайт доступен по протоколам HTTP и HTTPS. Однако лучше использовать только последний, потому что он шифрует и защищает данные вашего сайта.
вы можете увидеть полное руководство здесь https://tutsfx.com/force-https-traffic-using-htaccess/
Принудительное использование HTTPS для всего трафика
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
ВАЖНО: Убедитесь, что строка RewriteEngine On не повторяется дважды. Если строка уже существует, просто скопируйте остальную часть кода без нее.