Skocz do zawartości

Ciągła pętla przekierowań - htaccess


sełowca
 Udostępnij

Rekomendowane odpowiedzi

Cześć,

 

Kombinowałem z tym problemem już trochę ale nie mogę znaleźć rozwiązania. Wszystkie reguły jakie wpiszę, zapisaniu i odświeżeniu strony (tak usuwałem cookie's) wywołują pętle przekierowań.

Chcę przekierować wszystko na adres: https://www.domena.com.pl   (domena przykładowa jak coś)

 

Aktualnie przekierowania są takie: 

https://domena.com.pl  -> https://www.domena.com.pl  ✓

https://domena.com.pl ->  https://www.domena.com.pl  ✓

https://www.domena.com.pl  https://www.domena.com.pl  ✕

 

Brakuje tylko przekierowania z niezabezpieczonej strony z www.

 

Kod w .htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www.domena.com.pl$
RewriteRule ^(.*) https://www.domena.com.pl/$1 [QSA,L,R=301]

RewriteRule ^$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico)

RewriteRule ^(.*)$ index.php?/$1 [L]

 

Co tutaj przeszkadza i jak można to rozwiązać? Bardzo proszę o pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Twój fragment kodu:
 

RewriteCond %{HTTP_HOST} ^www.domena.com.pl$
RewriteRule ^(.*) https://www.domena.com.pl/$1 [QSA,L,R=301]

warunkiem wykonania przekierowania jest host www.domena.com.pl a przekierowujemy na https://www.domena.com.pl/... - tutaj występuję pętla - warunek "RewriteCond" będzie spełniony za każdym kolejnym wykonaniem przekierowania.

Kod, który powinien wykonać wszystko co potrzebujesz (zapoznaj się z komentarzami rozpoczynającymi się od #):
 

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

#dodałem warunek dla httpsa - musi on być wyżej, żeby nie występowało podwójne przekierowanie w przypadku bez httpsa i bez www
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://www.domena.com.pl/$1 [QSA,L,R=301]

#tutaj wprowadziłem wykrzyknik, który oznacza zaprzeczenie - w związku z tym przekierowanie zostanie wykonane dla wszystkiego co nie jest w hoscie www.domena.com.pl - więc jeśli masz jakieś inne domeny / subdomeny podpięte do tego katalogu też zostaną przekierowane!!!
RewriteCond %{HTTP_HOST} !^www\.domena\.com\.pl
RewriteRule ^(.*) https://www.domena.com.pl/$1 [QSA,L,R=301]

#mam wątpliwości co do poniższej linii - wg powinna ona powodować błąd 500, ale nie sprawdzałem z pamięci mówię - wydaje mi się że powinna ona zostac poprzedzona warunkami, które są niżej, ale do tych warunków jest inne przekierowanie z index.php na dole - w kazdym razie jak coś nie działa to do usunięcia
RewriteRule ^$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico)

RewriteRule ^(.*)$ index.php?/$1 [L]

 

pozycjonowanie-stron.png

Pozycjonowanie stron internetowych - https://www.eactive.pl/pozycjonowanie-stron/

Odnośnik do komentarza
Udostępnij na innych stronach

A wyczyściłeś cache przeglądarki ?

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

https://pomoc.home.pl/baza-wiedzy/przekierowanie-301-w-pliku-htaccess

Do zadań

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Z poziomu skryptu w php także da się wykonywać przekierowania  - i w ten sposób także można wywołać pętlę - należy szukać w plikach php:

header("Location:

czy jest to jakiś popularny CMS? Daj znać co to, może uda się coś więcej podpowiedzieć :)

Edytowane przez EACTIVE

pozycjonowanie-stron.png

Pozycjonowanie stron internetowych - https://www.eactive.pl/pozycjonowanie-stron/

Odnośnik do komentarza
Udostępnij na innych stronach

5 minut temu, EACTIVE napisał:

Z poziomu skryptu w php także da się wykonywać przekierowania  - i w ten sposób także można wywołać pętlę - należy szukać w plikach php:


header("Location:

czy jest to jakiś popularny CMS? Daj znać co to, może uda się coś więcej podpowiedzieć :)

 

Dzięki za dalszą pomoc :) . (Niestety) To autorski CMS. Nie mam pojęcia co tu się "odwala" bo wszystko co zrobię innego poza tym co jest aktualnie w .htaccess to wywala pętle przekierowań...

Odnośnik do komentarza
Udostępnij na innych stronach

53 minuty temu, sełowca napisał:

Nie mam pojęcia co tu się "odwala"

Użyj jakiegoś klienta online do wykonania żądań HTTP "Send HTTP Requests Online "  i zobacz co słychać

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

48 minut temu, Mion napisał:

Użyj jakiegoś klienta online do wykonania żądań HTTP "Send HTTP Requests Online "  i zobacz co słychać

Nie wiem czy to o to chodziło, ale na stronie reqbin.com podałem nazwę domeny po wykonaniu wyświetla się tylko 301 Moved permamently. Chyba, że coś źle zrobiłem  : / 

 

Odnośnik do komentarza
Udostępnij na innych stronach

301 Moved permamentl - oznacza, że jest przekierowanie, ale jeszcze będzie informacja na jaki dokładnie URL.
Następnie kasujesz przekierowanie z .htacces i sprawdzasz czy nadal jest.
Jeśli nadal jest przekierowanie, to znaczy, że akcja dzieje się w PHP. Wtedy musisz szukać w kodzie PHP.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

A poprzednie nie widziałeś, że edytowałem to raz. Dwa zgłaszają to inni użytkownicy forum. Trzy w regulaminie pisze, żeby tak nie cytować  bo to zaburza całość.  Chcesz do czegoś konkretnie odnieś się - cytuj nie w całości a wyrywkowo. 

 

 Regulamin który zaakceptowałeś :

 

- Naganne jest cytowanie całego tekstu bądź jego długich fragmentów aby dopisać swoją treść. Aby skrócić treść cytatu używaj [...]. 

 

  • Thanks 1
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności