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

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

2
задан 23 May 2017 в 15:41
1 ответ

Простой случай, предложенный 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]

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

.
2
ответ дан 3 December 2019 в 11:40

Теги

Похожие вопросы