Portál AbcLinuxu, 7. listopadu 2025 20:33
S laskavým přispěním zde zúčastněných a průzkumem internetu bylo nalezeno řešení, které uvádím s výpisem nastavení virtuálních hostů z konfiguračního souboru Apache pro případ, že kdyby někdo podobný problém někdy řešil, aby měl snažší práci.
Princip je jednoduše v tom, že oba hosty napíšeme dvakrát. Jednou oba pro port 80 a podruhé oba pro port 443 s tím, že ssl.neco.xx:80 provede jen přesměrování stejně jako www.neco.xx:443. Naproti tomu www.neco.xx:80 a ssl.neco.xx:443 jsou vlastní virtuální hosté, kteří se budou používat. Tím se zajistí, že zadáme-li v prohlížeči https://www.neco.xx, změní se to samo na http://www.neco.xx a podobně http://ssl.neco.xx se samo změní na https://ssl.neco.xx. Www běží tedy jen přes http a ssl jen přes https. Protokol použitý se mění s ohledem na název domény a bez ohledu na protokol zadaný v prohlížeči.
Výpis konfigurace
#Konfigurace virtuálních hostů na jedné
#IP-adrese tak, že s www se komunikuje jen
#pomocí protokolu HTTP a se ssl jen pomocí
#protokolu HTTPS. O změnu použitého protokolu
#se stará modul mod_rewrite, který přesměruje
#požadavky s nechtěným protokolem na kýžený
#protokol.
#Vyhodnocení požadavků na portu 80
NameVirtualHost 192.168.1.4:80
<VirtualHost 192.168.1.4:80>
ServerName www.neco.xx
DocumentRoot /www/http
#ostatní nastavení
</VirtualHost>
#Virtuální host, který se stará jen o přesměrování
#z HTTP na HTTPS pro ssl.neco.xx
<VirtualHost 192.168.1.4:80>
ServerName ssl.neco.xx
DocumentRoot /www/https
#Přepsání lokátoru URL tak, aby místo HTTP začínal HTTPS
RewriteEngine On
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>
#Vyhodnocení požadavků na portu 443
NameVirtualHost 192.168.1.4:443
<IfDefine SSL> #je-li zaveden modul mod_ssl...
<VirtualHost 192.168.1.4:443>
ServerName ssl.neco.xx
DocumentRoot /www/https
SSLEngine On
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eN:ULL
SSLCertificateFile ssl/server.crt
SSLCertificateKeyFile ssl/server.key
</VirtualHost>
</IfDefine>
#Virtuální host, který se stará o případné přesměrování
#z HTTPS na HTTP pro www.neco.xx
<VirtualHost 192.168.1.4:443>
ServerName www.neco.xx
DocumentRoot /www/http
#Přepsání lokátoru URL tak, aby místo HTTPS začínal HTTP
RewriteEngine On
RewriteRule ^/(.*) http://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>IP-adresa je tu 192.168.1.4, ale může být (samozřejmě) jakákoliv jiná
Iba to presmerovanie sa mi zda kanon na vrabce, ale moze vyplyvat z konkretnej situacie. Ja by som pouzil jednoduche:
RedirectMatch ^/$ https://ssl.example.org/
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.