Назад | Перейти на главную страницу

Принудительное использование SSL с помощью mod_rewrite

У меня есть следующее утверждение, и оно отлично работает, чтобы перенаправить все запросы на "www" на: 80, чтобы заставить браузер перейти в то же место на: 443

RewriteEngine   on
RewriteCond     %{HTTPS} !=on
RewriteRule     ^/(.*)$ https://www.mydomain.com/$1 [R=301,L]

Однако я хочу сделать следующее: независимо от того, что находится между https: // и .mydomain.com - в данном случае www, но это может быть что угодно, например «www2», «dev» и т. Д. - я хочу URL просто конвертируется в его эквивалент SSL.

Я новичок в mod_rewrite, так что то, что я хочу сделать, возможно, учитывая, что субдомен может быть любой переменной длины символов?

Заранее благодарю за любую помощь.

Используя переменные среды, предоставляемые Apache mod_rewrite:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Видеть http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond Чтобы получить больше информации.

Пытаться:

RewriteEngine   on
RewriteCond     %{HTTPS} !=on
RewriteRule     ^/*(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

После включения ведения журнала по совету геокара и некоторых исследований я обнаружил, что проблема связана с отсутствующим оператором в /etc/apache2/ports.conf, который вызывал перекрытие: 443. Я решил это, и проблема исчезла. Спасибо всем за понимание и помощь.

Вы можете использовать HTTP_HOST переменная в вашей строке подстановки:

RewriteEngine   on

RewriteCond     %{HTTPS} !=on
RewriteCond     %{HTTP_HOST} mydomain\.com$
RewriteRule     ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]