Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP].htaccess przekierowanie na httpS
Forum PHP.pl > Forum > Przedszkole
adamiakadam00
Witam wszystkich. Od razu powiem że nie jestem specjalistą w programowaniu (jakimkolwiek) i mam problem. baaasmiley.gif

Kupiłem skrypt (a dokladnie licencje - skrypt ogloszeniowy - framework kohana - bardzo skomplikowany) - całkowicie niedostosowany do htpps (zdanie wlasciciela). Po jakims czasie udalo mi sie na serwerach KEI.PL wymusić SSL dla calej strony (z panelu administratora konta) i dostosowac wszystkie niedzialajace elementy skrytpu. Działa perfekt. Niestety. Kei nie chce mi wydac umowy o powierzeniu przetwarzania danych osobowych. Twierdzą że to tylko dla firm. Doszedłem do wniosku że wyemigruję na coś tańszego i co da mi ten papier od ręki. Home.pl daje. Niestety w ich panelu nie ma wymuszenia https. Twierdzą że trzeba to ręcznie wymusić przez htacces.

Ew. może ktoś zna hosting który daje wymuszanie https dla domeny (spod panelu administratora) i który daje papier na powierzenie przetwarzania danych osobowych?


U mnie htacces wygląda tak:

RewriteEngine On

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

Zmiana http na https daje przekierowanie z www.serwer**** na https bez www lecz przy logowaniu/wylogowaniu, wejsciu do panelu admina serwer***.home.pl/admin wyłącza https. Strona wchodzi wtedy w http i z niego już nie wychodzi. Natomiast sprawa z przekierowaniami jest bardziej skomplikowana bo skrypt obsluguje dodawanie subdomen (bardzo fajna sprawa). Próbowałem wielu kombinacji i żadna z nich nie działa. Ma ktoś jakiś pomysł? Napisałem do adminów kei jak działa u nich wymuszanie https bo tam działa to perfekt. :/

Z góry dziękuję za wszystkie opowiedzi.
session
Nie rozumiem o co dokładnie Ci chodzi, ale przekierowanie wszystkich adresów na https to coś takiego:

Kod
RewriteEngine On

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


Cytat
.htaccess files acts [...] for the directory that they are in, or all sub-directories

Zatem o ile subdomeny odnoszą się do tego samego zasobu to też powinno działać.
adamiakadam00
Bardzo dziękuję za odpowiedź ale niestety nie zadziałało. Wchodzi pięknie na https ale wywala w firefoxie - nieprawidłowe przekierowanie. Poniżej wkleiłem resztę kodu. Bardzo proszę o pomoc - jedyny sposób a wymuszenie jaki znam obecnie to wymuszenie spod panelu administratora na serwerach kei.pl przy czym nie mogę na kei pozostać bo nie chcą mi wydać dodatkowej umowy na powierzenie przetwarzania danych osobowych a z tego tytułu - jako że ustawa wymaga szyfrowania połączenia - koło się zamyka.
CODE
# Turn on URL rewriting
RewriteEngine On

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


# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteRule ^(?:templates)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
trueblue
Obecne przekierowanie, które masz prowadzi do pętli przekierowań (http->https->https->https...)

Kod
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
adamiakadam00
Bardzo dziękuję - zadziałało!!!
Natomiast poprosiłbym jeszcze o wyłączenie subdomen spod HTTPS bo nie mam wildcarda tylko zwykłe DV.

OBIECUJĘ DOBRE PIWO smile.gif

www.serwer1667331.home.pl/

www.dealer.serwer1667331.home.pl/
trueblue
Kod
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{SERVER_NAME} ^www.serwer1667331.home.pl$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
adamiakadam00
Niestety nie zadziałało. Nadal w subdomenie wymusza https.

www.dealer.serwer1667331.home.pl/
trueblue
Kod
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{HTTP_HOST} ^www.serwer1667331.home.pl$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
adamiakadam00
W dalszym ciągu to samo :/
dealer.serwer1667331.home.pl
trueblue
Wyczyść cache przeglądarki, albo spróbuj na innej.
adamiakadam00
No niestety też nie działa.

Poza tym nie działa przekierowanie z www - wtedy wyskakuje że połączenie niezaufane.

Mógłbym prosić o skonfigurowanie przekierowania z www na bez www i wtedy całość na https?
trueblue
Kod
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{HTTP_HOST} ^(www\.)?serwer1667331.home.pl [NC]
RewriteRule ^(.*)$ https://www.serwer1667331.home.pl%{REQUEST_URI} [L,R=301]

adamiakadam00
To też nie zadziałało ale używając mojej mikro-wiedzy w tym temacie zadziałało coś innego:

CODE
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{SERVER_NAME} ^www.serwer1667331.home.pl$
RewriteRule ^(.*)$ https://serwer1667331.home.pl%{REQUEST_URI} [L,R=301]


Tylko nie umiem wyłączyć spod tego subdomeny. Przy tym ustawieniu subdomenę wyrzuca do strony głównej :/
trueblue
W ten sposób żądanie po http lub żądanie z www. zostanie przekierowane na https.


Pokaż cały .htaccess.

adamiakadam00
CODE
# Turn on URL rewriting
RewriteEngine On

RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{SERVER_NAME} ^www.serwer1667331.home.pl$
RewriteRule ^(.*)$ https://serwer1667331.home.pl%{REQUEST_URI} [L,R=301]



# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteRule ^(?:templates)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
trueblue
.htaccess jest ok.
Nie masz ustawionego wymuszania w aplikacji?
adamiakadam00
Co do aplikacji, wg. autora ona w ogole nie jest dostosowana do SSL i nie ma opcji. Wg. autora skrytpu nie widzi on nawet możliwości przystosowania go do SSL. Mam projekt ktory buduję po godzinach i udało mi się dostosować do SSL całą stronę. Niestety dostosowanie do SSL zaczynało się od wymuszenia https przez panel administracyjny kei.pl - inne hostingi nie posiadają tej opcji i musialem zainteresowac sie htaccess.

Ale udało mi się wymyśleć działające ustawienia i dla poddomeny i dla domeny. Dla strony działające przekierowanie z http i http+www na https(bez-www), oraz nieużywanie https dla subdomeny zadziałało:
CODE
RewriteEngine On

RewriteCond %{SERVER_NAME} ^serwer1667331.home.pl$[OR]
RewriteCond %{SERVER_NAME} ^www.serwer1667331.home.pl$
RewriteRule ^(.*)$ https://serwer1667331.home.pl%{REQUEST_URI} [L,R=301]



Tylko ciężej będzie z wymuszeniem przekierowania subdomeny z www na bez www ale to już nie jest tak wielki problem. Subdomena nie powinna być na https bo nie mam wildcard. Jak masz jakis pomysl to poprosze smile.gif

Podaj na priv nr. konta- przeleje na dobre piwko.
trueblue
To jest dokładnie to samo co to:
Kod
RewriteCond %{HTTP_HOST} ^(www\.)?serwer1667331.home.pl [NC]
RewriteRule ^(.*)$ https://www.serwer1667331.home.pl%{REQUEST_URI} [L,R=301]


Nie wpada Ci obecnie w pętlę przekierowań?
adamiakadam00
Nie wpada na szczęście.

To co napisałeś odwołuje się do https://www.serwer1667331.home.pl a mi zależy na sztywnym przekierowaniu na adres bez www.

Natomiast edycja pod ominięcie www nie działa. (wg. Twojego ostatniego postu).
CODE

RewriteCond %{HTTP_HOST} ^(www\.)?serwer1667331.home.pl [NC]
RewriteRule ^(.*)$ https://serwer1667331.home.pl%{REQUEST_URI} [L,R=301]
trueblue
Mój poprzedni ("ostatni") post wskazywał tylko, że to rozbiłeś to co poprzednio napisałem na dwie reguły i idziesz w złym kierunku, bo pozbyłeś się sprawdzania portu/https. Obydwa rozwiązania powinny wpadać w pętlę przekierowań - obydwa są niepoprawne.

To co masz w ostatni poście (powyżej), jest analogiczne do powyższych - znów wpadnie w pętlę przekierowań po przekierowani na bez www.
session
Ok faktycznie pierwsze moje robi pętle tongue.gif Nie wiem czy w końcu udało się Wam rozwiązać ten problem więc nieśmiało dorzucę: tongue.gif
To może tak:
Kod
RewriteEngine On

RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(www\.)?[^\.]?serwer1667331.home.pl$ [NC]
RewriteRule ^(.*)$ https://serwer1667331.home.pl%{REQUEST_URI} [L,R=301]

O ile serwer1667331.home.pl jest traktowane jako domena główna, a np. subdomena.serwer1667331.home.pl jako subdomena i o ile dobrze zrozumiałem, że jak subdomena to nie na https, a jak główna to na https niezależnie czy z www czy bez.

EDIT:
Cytat
Tylko ciężej będzie z wymuszeniem przekierowania subdomeny z www na bez www ale to już nie jest tak wielki problem

Dla subdomen można teraz kolejne dopisać:
Kod
RewriteCond %{HTTP_HOST} ^www\.+(.*[\.]+)serwer1667331.home.pl$
RewriteRule ^(.*)$ http://%1serwer1667331.home.pl%{REQUEST_URI} [L,R=301]
trueblue
To jest podobna reguła, ale użyte jest sprawdzanie HTTPS/HTTP, a nie portu. Również poprawna.
adamiakadam00
To co wcześniej sam wymyśliłem nie zapętlało się, ładnie chodziłem po stronie i nic nie pokazało błędu.
To co kolega Session powyżej wpisał tak samo działa perfekt. Bardzo dziękuję za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.