sełowca

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

Recommended Posts

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  ✓

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

http://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.

Share this post


Link to post
Share on other sites

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 - www.eactive.pl

Share this post


Link to post
Share on other sites
Posted (edited)
1 godzinę temu, EACTIVE napisał:

Twój fragment kodu:....

 

Zrobiłem tak jak napisałeś ale wciąż ta pętla się pojawia...

Edited by MaxPan
nie cytuj w całości!

Share this post


Link to post
Share on other sites

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


:hi:Pan Piwko i Wódeczka, czyli Jak szyfrować i podpisywać cyfrowo wiadomości e-mail

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Node.js / MySQL :chatownik:

Share this post


Link to post
Share on other sites
Przed chwilą, Mion napisał:

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

 

Jasne, że tak. W innych przeglądarkach też sprawdzałem.

Share this post


Link to post
Share on other sites
https://pomoc.home.pl/baza-wiedzy/przekierowanie-301-w-pliku-htaccess

Do zadań


:hi:Pan Piwko i Wódeczka, czyli Jak szyfrować i podpisywać cyfrowo wiadomości e-mail

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Node.js / MySQL :chatownik:

Share this post


Link to post
Share on other sites

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ć :)

Edited by EACTIVE

pozycjonowanie-stron.png

Pozycjonowanie stron internetowych - www.eactive.pl

Share this post


Link to post
Share on other sites
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ń...

Share this post


Link to post
Share on other sites
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ć


:hi:Pan Piwko i Wódeczka, czyli Jak szyfrować i podpisywać cyfrowo wiadomości e-mail

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Node.js / MySQL :chatownik:

Share this post


Link to post
Share on other sites
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  : / 

 

Share this post


Link to post
Share on other sites

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.


:hi:Pan Piwko i Wódeczka, czyli Jak szyfrować i podpisywać cyfrowo wiadomości e-mail

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Node.js / MySQL :chatownik:

Share this post


Link to post
Share on other sites
2 godziny temu, Mion napisał:

301 Moved permamentl -....

 

Na adres https://www.domena.com.pl czyli na tą na którą powinno być wszystko przekierowane. Poszperam gdzieś w PHP jeśli tak.

Edited by MaxPan
nie cytuj w całości!

Share this post


Link to post
Share on other sites

Mogłeś by przestać cytować w całości posty na jakie odpowiadasz dodatkowo tuż pod tym postem?


re287am9.jpg

 

Share this post


Link to post
Share on other sites

Ostatnia odpowiedź to faktycznie a tak poza tym to co Ci to przeszkadza? Przynajmniej wiadomo do czego się odnoszę i łatwiej później ogarnąć temat.

  • Haha 1

Share this post


Link to post
Share on other sites

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

re287am9.jpg

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.