Przekierowanie HTTP na HTTPS na domyślnym Hostie wirtualnym bez nazwy serwera

Na moim serwerze apache chciałbym móc przekierować wszystkie przychodzące żądania http na równoważne żądanie https. Haczyk polega na tym, że chciałbym móc to zrobić dla mojego domyślnego hosta wirtualnego bez podawania ServerName i mieć przekierowanie działające z dowolną nazwą serwera pojawiającą się w adresie URL żądania. Liczę na coś takiego:

NameVirtualHost *:80
<VirtualHost *:80>
    RedirectPermanent / https://%{SERVER_NAME}/
    ...
</VirtualHost>

Czy jest to możliwe za pomocą Redirect Czy będę musiał uciekać się do Rewrite?

Author: highlycaffeinated, 2012-07-24

3 answers

Spróbuj dodać to w konfiguracji vhost:

RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
 91
Author: Jon Lin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-23 21:59:09

Oba działają dobrze. Ale zgodnie z Apache docs Należy unikać używania mod_rewrite do prostych przekierowań, i używać Redirect zamiast tego. Więc według nich najlepiej zrobić:

<VirtualHost *:80>
    ServerName www.example.com
    Redirect / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
</VirtualHost>

Pierwsza / po Redirect To Adres url, druga część to miejsce, w którym powinien zostać przekierowany.

Możesz go również użyć do przekierowania adresów URL do subdomeny: Redirect /one/ http://one.example.com/

 73
Author: orszaczky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-02 00:10:26

To jest kompletny sposób na pominięcie niepotrzebnych przekierowań;)

Te zasady są przeznaczone do stosowania w .pliki htaccess, jako RewriteRule w a*: 80 VirtualHost wpis nie wymaga żadnych warunków.

RewriteEngine on
RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]

Eplanacje :

RewriteEngine on

= = > włącz silnik w ogóle

RewriteCond %{HTTPS} off [OR]

= = > dopasowanie na non-https połączenia, or (not setting [OR] would cause a implicit and!)

RewriteCond %{HTTP:X-Forwarded-Proto} !https

== > dopasuj na przekierowanych połączeniach (proxy, loadbalancer, itp.) bez https

RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]

= = > Jeśli jeden z obu warunków pasuje, wykonaj przepisanie całego adresu URL, wysyłając 301, aby ten "nauczył się" przez Klienta (niektórzy tak, niektórzy nie) i L dla ostatniej reguły.

 31
Author: Jimmy Koerting,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-30 21:54:22