Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [html] strona bledu 404
lukash82
post
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


Witam,

Mam takie przedszkolne pytanie...

Jeśli dana podstrona nie istnieje to przeglądarka standardowo wywala brzydką stronę 404. Wyłapuję wtedy takie przypadki i przekierowuję internautę na specjalnie przygotowaną stronę błędu 404.html. Z tym że wtedy kod odpowiedzi http = 200, bo teoretycznie wszystko jest ok. Czy takie rozwiązanie jest poprawne?

Przekierowanie robię za pomocą
  1. header("Location: 404.html");


Pozdrawiam, Ł.

Ten post edytował lukash82 4.11.2015, 12:02:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie jest. Przed przekierowaniem musisz wyrzucić status 404.
  1. header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


header("Location: 404.html", true, 404);
Go to the top of the page
+Quote Post
KR2615
post
Post #4





Grupa: Zarejestrowani
Postów: 311
Pomógł: 13
Dołączył: 7.05.2007

Ostrzeżenie: (0%)
-----


Najprościej zrobić to przez .htaccess. Masz wtedy kkod 404 i customizowalną stronę błędu
Kod
ErrorDocument 404 /404.html


--------------------
Go to the top of the page
+Quote Post
lukash82
post
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


Witam,

Muszę odgrzać kotleta...

Próbuję już na milion sposobów i dalej nie mogę sobie z tym 404 poradzić. Mam taką konstrukcję (w mega uproszczeniu bez zapytań, etc.):

  1. $result = mysql_query(SELECT...) or die(mysql_error());
  2. $row = mysql_fetch_array($result);
  3.  
  4. // jeśli istnieje
  5. if($row) // to wykonaj
  6.  
  7. //jeśli nie istnieje
  8. else // > 404


No i teraz jeśli podstrona nie istnieje to wykonuję tak jak napisał @Pyton_000 czyli: header("Location: 404.html",TRUE,404);

Efekt jest taki, że np. mamy adres domena.pl/kontakt, zmieniając to na domena.pl/kontakttttt otrzymuję w firebugu status 404, ale przekierowanie nie następuje. Strona zostaje na adresie domena.pl/kontakttttt. A że takiej strony fizycznie nie ma to mam pustą białą stronę...

Pytanie, jak zmusić to ustrojstwo do przekierowania na stronę 404.html. No bo tak to chyba powinno wyglądać. Jednak nawet jeśli się już uda to zrobić to tak na chłopski rozum, 404.html istnieje więc znów wtedy dostanę status 200. Już nie ogarniam tego...:/

Próbowałem też najprostszej metody podanej w milionie miejsc w necie, czyli w htaccess "error document 404", ale przy takiej powyższej konstrukcji if - else to nie działa.

Jeśli ktoś może mi pomóc to ogarnąć to będę dźwięczny.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


To że ten plik istnieje to nie oznacza że dostaniesz 200, właśnie po to są te dodatkowe parametry.

plik 404.html musi być w odpowiedniej ścieżce.

Go to the top of the page
+Quote Post
lukash82
post
Post #7





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


Tak, tylko ten przypadek jest taki trochę specyficzny. Ale już sobie z tym poradziłem. Rozwiązanie poniżej, może się komuś przyda:

  1. header("HTTP/1.1 404 Not Found");
  2. include_once('404.php'); // czy co kto tam woli...


I wtedy nie ma przekierowania na podstronę domena.pl/404 tylko zostawiamy usera na stronie, gdzie coś sobie źle wpisał w adresie i może to poprawić. W treści strony ładujemy info o błędzie 404 z instrukcjami dla usera, a dla googlebotów mamy ładny status 404. W każdym bądź razie dzięki za zaangażowanie w rozwiązanie problemu. Pozdrawiam, Ł.

Ten post edytował lukash82 14.12.2015, 13:50:28
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 05:08