У меня есть следующее утверждение, и оно отлично работает, чтобы перенаправить все запросы на "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]