На этот вопрос уже есть ответ:
У нас есть несколько настроек поддоменов, и я хочу упростить конфигурацию apache, особенно потому, что эти конкретные поддомены изменчивы. Во всяком случае, я пытаюсь получить правило перезаписи, включающее хост.
На данный момент у меня есть:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*).net.au$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%1.net.au$1 [R=302,L]
Это основано на https://stackoverflow.com/questions/3634101/url-rewriting-for-different-protocols-in-htaccess и http://httpd.apache.org/docs/2.4/rewrite/vhosts.html
Однако шаблон в первом условии не записывается в перезаписанный адрес, и меня отправляют по адресу. net.au/wherever (не разрешил мне публиковать с https впереди) - я что-то пропустил?
Запуск apache 2.4 на Ubuntu 14.04
Простой случай, предложенный Ladadada, работает, когда доменное имя одинаково между запрашиваемым хостом и предполагаемым хостом:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=302,L]
Однако, дополнительная сложность заключается в том, что мне также нужно иметь http:// sub-domain.local
перенаправление на http:// sub-domain.net. au
- поэтому использования %{HTTP_HOST}
было бы недостаточно.
Я еще раз посмотрел на некоторые примеры и понял, что %1 обратная ссылка, кажется, применима только к RewriteCond непосредственно перед RewriteRule.
Я переупорядочил вещи:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(.*)(.local|.net.au)$
RewriteRule ^(.*)$ https://%1.net.au$1 [R=302,L]
И перенаправления работают отлично
.