vjdj 4 Zgłoś post Napisano Maj 20, 2016 (edytowany) Jak w temacie dostęp do domeny potrzebuję tylko po https. Zazwyczaj robiłem to przy użyciu .htaccess w poniższy sposób. #Przekierowanie na https RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://mojadomena.pl Jednak to niezależnie wpisując http://mojadomena.pl lub http://www.mojadomena.pl przekierowuje na https://mojadomena.pl. Pytanie jak przekierować, http://mojadomena.pl ->https://mojadomena.pl http://www.mojadomena.pl->https://mojadomena.pl Jak przekierować to poprawnie w .htaccess? Ewentualnie jak skonfigurować to w apache dla jednej domeny. Zmieniłem w configu apacha dla mojadomena.pl listen na 443 ale to wtedy przerzucało mnie na główną strone vps'a którą podałem podczas instalacji. Wyłączenie nasłuchiwania na porcie 80 dla całego serwera, skutkuje brakiem wyświetlania strony gdy się nie doda https. Jak to zrobić z automatu dla jednej domeny, jak dla całego serwera, że jak wyłączę nasłuchiwanie na danej domenie/ serwerze to będzie wiedziało, że ma być https I ostatnie pytanie jak w zasadzie powinno się robić, co jest bezpieczniejsze/wydajniejsze/inne ustawienie serwer apache czy .htaccess Edytowano Maj 20, 2016 przez vjdj (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
r4nt 1 Zgłoś post Napisano Maj 20, 2016 Spróbuj RewriteCond %{HTTP_HOST} ^mojadomena.pl [NC] RewriteRule ^(.*)$ https://www.mojadomena.pl/$1 [R=301,L] RewriteCond %{HTTP_REFERER} !mojadomena [NC] Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Maj 20, 2016 (edytowany) A jakby ktoś szukał na nginxie to można jeszcze prościej. if ($scheme = http) { return 301 https://$server_name$request_uri; } Edytowano Maj 20, 2016 przez Archi (zobacz historię edycji) 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
vjdj 4 Zgłoś post Napisano Maj 21, 2016 Dzięki za odpowiedzi Udostępnij ten post Link to postu Udostępnij na innych stronach
blfr 225 Zgłoś post Napisano Maj 22, 2016 A jakby ktoś szukał na nginxie to można jeszcze prościej. if ($scheme = http) { return 301 https://$server_name$request_uri; } To popularny błąd. Poprawnie w nginksie się łapie innym server{}. Nie potrzeba ifów. server { listen 80; server_name www.example.com example.com; return 301 https://example.com$request_uri; } server { listen 443 ssl; server_name example.com; # [...] } Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Maj 22, 2016 (edytowany) To nie błąd, to rozwiązanie jeśli nie chcesz tworzyć dwóch bloków server { }, co ma miejsce np. w panelu ISP kiedy chcesz dać użytkownikowi moc tworzenia nginxowych regułek, a przy tym dbasz o bezpieczeństwo serwera. I nie, nie jest to w żaden sposób gorsze ani wolniejsze niż zaproponowane rozwiązanie przez Ciebie. Aczkolwiek w pełni się zgadzam, że dwa bloki serwer są bardziej eleganckie, choć ja najczęściej mam tam jeszcze kilka różnych regułek i chcę, żeby były aplikowane do obydwu bloków - np. rate limiting. W tym wypadku duplikacja kilkunastu czy nawet kilkudziesięciu linijek w dwóch miejscach mija się z celem, a wyżej stoi tylko blok http. Tak więc przyzwyczaiłem się już do tego prostego i krótkiego ifa, aniżeli duplikację configów w kilku miejscach. Edytowano Maj 22, 2016 przez Archi (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Czerwiec 8, 2016 @Archi - https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/ To działa, ale niestety nie powinieneś niedoświadczonym podpowiadać if'a, bo zaczną go używać jak regułek z .htaccess i mogą być potem większe problemy Udostępnij ten post Link to postu Udostępnij na innych stronach