Mam stary adres URL ( www1.test.net
) i chciałbym go przekierować na https://www1.test.net
Zaimplementowałem i zainstalowałem nasz certyfikat SSL na mojej stronie.
To jest mój stary plik .htaccess
:
RewriteEngine On
RewriteRule !\.(js|gif|jpg|png|css|txt)$ public/index.php [L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]
Jak mogę skonfigurować mój .htaccess
plik, aby automatycznie przekierowywać do adresu URL https
?
Dzięki!
RewriteCond %{REQUEST_FILENAME} !-f
po którym następuje Twoje przekierowanie.Odpowiedzi:
Aktualizacja 2016
Ponieważ ta odpowiedź przyciąga uwagę, chcę zasugerować bardziej zalecany sposób robienia tego za pomocą Virtual Hosts: Apache: Redirect SSL
Stara odpowiedź, hacky, biorąc pod uwagę, że twój port ssl nie jest ustawiony na 80, to zadziała:
Zauważ, że powinna to być twoja pierwsza reguła przepisywania.
Edycja: ten kod wykonuje następujące czynności. RewriteCond (ition) sprawdza, czy ServerPort żądania wynosi 80 (który jest domyślnym portem http, jeśli określono inny port, należy dostosować do niego warunek). Jeśli tak, dopasowujemy cały adres URL
(.*)
i przekierowujemy go na adres https-url.%{SERVER_NAME}
można zastąpić określonym adresem URL, ale w ten sposób nie musisz zmieniać kodu dla innych projektów.%{REQUEST_URI}
jest częścią adresu URL po TLD (domenie najwyższego poziomu), więc zostaniesz przekierowany do miejsca, z którego przyszedłeś, ale jako https.źródło
[R=301]
zamiast tego.Aby pomyślnie przekierować wszystkie strony mojej domeny z http na https, używam:
Pamiętaj, że spowoduje to przekierowanie za pomocą
301 'permanently moved'
przekierowania, które pomoże przenieść Twoje rankingi SEO.Aby przekierować za pomocą
302 'temporarily moved'
zmiany[R=302,L]
źródło
RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Jest to najlepsze rozwiązanie dla
www
i dla HTTPS, dla proxy i bez użytkowników proxy.RewriteEngine On ### WWW & HTTPS # ensure www. RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # ensure https RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ### WWW & HTTPS
źródło
%{HTTPS} off
nie wystarczaWymuszam https następującym kodem:
źródło
W przypadkach, gdy połączenie HTTPS / SSL kończy się na module równoważenia obciążenia, a cały ruch jest wysyłany do instancji na porcie 80, następująca reguła działa w celu przekierowania niezabezpieczonego ruchu.
Upewnij się, że
mod_rewrite
moduł jest załadowany.źródło
Szukając najlepszego sposobu na przekierowanie, znalazłem to (pochodzące z html5boilerplate):
Może to komuś pomoże w 2017 roku! :)
źródło
# <IfModule mod_headers.c>
i# </IfModule>
?Wstaw ten kod do swojego pliku .htaccess. I powinno działać
źródło
Dodaj ten kod na końcu pliku .htaccess
źródło
RewriteEngine on
do tego górę, aby to zadziałało.Dodanie następujących elementów na początku pliku .htaccess
źródło
Daje to pewność, że przekierowania działają dla wszystkich kombinacji nieprzezroczystych serwerów proxy.
Obejmuje to serwer WWW <http> proxy <https> klienta przypadku .
źródło
Miałem też problem z przekierowaniem. Wypróbowałem wszystko, co zaproponowano w Stackoverflow. Jedyny przypadek, który znalazłem sam, to:
źródło
Wymuszanie HTTPS przy użyciu
.htaccess
pliku==> Przekieruj cały ruch internetowy: -
Aby zmusić cały ruch internetowy do korzystania z protokołu HTTPS, wstaw następujące wiersze kodu w
.htaccess
pliku w folderze głównym witryny.==> Przekierowanie tylko określonej domeny: -
Aby wymusić na określonej domenie korzystanie z protokołu HTTPS, użyj następujących wierszy kodu w
.htaccess
pliku w folderze głównym witryny:Jeśli to nie zadziała, spróbuj usunąć pierwsze dwie linie.
==> Określony folder przekierowania: -
Jeśli chcesz wymusić SSL w określonym folderze, wstaw poniższy kod do
.htaccess
pliku umieszczonego w tym folderze:źródło
Zamień swoją domenę na
domainname.com
, działa ze mną.źródło