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

Как получить имя хоста в rewriterule

У нас есть несколько настроек поддоменов, и я хочу упростить конфигурацию 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 / куда угодно (я не могу отправлять сообщения с https впереди) - я что-то пропустил?

Запуск apache 2.4 в Ubuntu 14.04

Простой случай, предложенный Ladadadada, работает, когда доменное имя совпадает между запрашиваемым и предполагаемым хостом:

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]

И перенаправления работают отлично