-
11. Data: 2012-06-13 22:22:04
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: Marek <p...@s...com>
Dnia Wed, 13 Jun 2012 22:11:16 +0200, Cezary Tomczyk napisał(a):
> Argh, zajrzałem w stare źródło swoje i faktycznie robiłem tak tylko dla
> "301 Moved Permanently" :/ Nie dla 404.
No widzisz... a jednak :-)
Tak więc mój problem pozostaje aktualny.
-
12. Data: 2012-06-14 09:38:03
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: Piotr Chamera <p...@p...onet.pl>
W dniu 2012-06-13 19:34, Cezary Tomczyk pisze:
> W dniu 2012-06-13 19:13, Marek pisze:
>> Mam pewien kłopot z logiką zarządzania będem 404. Otóż mamy sobie CMS.
>> Gdy
>> odwołujemy się do dokumentu, który istniał ale został wykasowany lub
>> zablokowany - chciałbym aby pojawiła się spersonalizowana informacja, że
>> "strona WWW o jakimś ID nie istnieje". Gdyby nie fakt personalizacji
>> komunikatu temat byłby trywialny.
>>
>> No więc algorytm mamy taki:
>> - Ktoś wchodzi np. z Googli na nie istniejącą stronę serwisu.
>> - CMS grzebie w swoich czeluściach w poszukiwaniu tejże strony i
>> stwierdza,
>> że jej nie ma.
>> - W tym momencie tworzona jest w locie treść komunikatu i następuje
>> przekierowanie do strony "warningu" z przekazaniem w sesji w/w treści
>> komunikatu.
>> - Pojawia się piekna strona z w/w komuniaktem... ale to dla mnie za mało.
>>
>> No i świetnie... ale przekierowanie to nie kod 404 lecz któryś z serii
>> 300.
>> Mogę w komunikacie ustawić <meta> na "noindex" ale to nie zadziała jak
>> 404
>> z punktu widzenia wyszukiwarki. Zauważyłem, że jeśli strona jest już
>> zindeksowana, to taką pozostanie jeśli nie dam wyraźnie 404. Jak to
>> rozwiązać?
>
> Wg mnie, jeśli strona nie istnieje, to powinno się przekierować na
> podstronę z informacją o tym dla użytkownika + nagłówek 404.
Ale po co przekierowywać na jakąś podstronę? Jeśli strona nie istnieje,
to po prostu wygenerować pod żądanym przez użytkownika url stronę
z komunikatem błędu i dać jej nagłówek 404. W treści komunikatu można
dać cokolwiek, np. linki do jakichś opcji dla użytkownika,
do wyszukiwarki itp. - niczemu to nie przeszkadza.
> Jeśli jednak strona istnieje, ale po prostu jest w innym miejscu, to
> przekierować użytkownika automatycznie + nagłówek 301 Moved Permanently.
-
13. Data: 2012-06-14 11:55:28
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: Cezary Tomczyk <c...@g...pl>
W dniu 2012-06-14 09:38, Piotr Chamera pisze:
> W dniu 2012-06-13 19:34, Cezary Tomczyk pisze:
>> W dniu 2012-06-13 19:13, Marek pisze:
>>> Mam pewien kłopot z logiką zarządzania będem 404. Otóż mamy sobie CMS.
>>> Gdy
>>> odwołujemy się do dokumentu, który istniał ale został wykasowany lub
>>> zablokowany - chciałbym aby pojawiła się spersonalizowana informacja, że
>>> "strona WWW o jakimś ID nie istnieje". Gdyby nie fakt personalizacji
>>> komunikatu temat byłby trywialny.
>>>
>>> No więc algorytm mamy taki:
>>> - Ktoś wchodzi np. z Googli na nie istniejącą stronę serwisu.
>>> - CMS grzebie w swoich czeluściach w poszukiwaniu tejże strony i
>>> stwierdza,
>>> że jej nie ma.
>>> - W tym momencie tworzona jest w locie treść komunikatu i następuje
>>> przekierowanie do strony "warningu" z przekazaniem w sesji w/w treści
>>> komunikatu.
>>> - Pojawia się piekna strona z w/w komuniaktem... ale to dla mnie za
>>> mało.
>>>
>>> No i świetnie... ale przekierowanie to nie kod 404 lecz któryś z serii
>>> 300.
>>> Mogę w komunikacie ustawić <meta> na "noindex" ale to nie zadziała jak
>>> 404
>>> z punktu widzenia wyszukiwarki. Zauważyłem, że jeśli strona jest już
>>> zindeksowana, to taką pozostanie jeśli nie dam wyraźnie 404. Jak to
>>> rozwiązać?
>>
>> Wg mnie, jeśli strona nie istnieje, to powinno się przekierować na
>> podstronę z informacją o tym dla użytkownika + nagłówek 404.
>
> Ale po co przekierowywać na jakąś podstronę? Jeśli strona nie istnieje,
> to po prostu wygenerować pod żądanym przez użytkownika url stronę
> z komunikatem błędu i dać jej nagłówek 404. W treści komunikatu można
> dać cokolwiek, np. linki do jakichś opcji dla użytkownika,
> do wyszukiwarki itp. - niczemu to nie przeszkadza.
O tym dokładnie myślałem. Może użyłem zbyt dużego skrótu myślowego.
--
Cezary Tomczyk
http://www.ctomczyk.pl/
-
14. Data: 2012-06-14 13:41:10
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: Marek <p...@s...com>
Dnia Thu, 14 Jun 2012 09:38:03 +0200, Piotr Chamera napisał(a):
> Ale po co przekierowywać na jakąś podstronę? Jeśli strona nie istnieje,
> to po prostu wygenerować pod żądanym przez użytkownika url stronę
> z komunikatem błędu i dać jej nagłówek 404. W treści komunikatu można
> dać cokolwiek, np. linki do jakichś opcji dla użytkownika,
> do wyszukiwarki itp. - niczemu to nie przeszkadza.
Mi chodziło o 2 aspekty co do przekierowania. Mianowicie zależy mi na
personalizacji treści komunikatu. Jeśli strony nie ma a ktoś uważa, że to
błąd, to chciałbym aby przesłał mi ID tej strony. Wiele ludzi nie ma
pojęcia co to URL itp. Dlatego wolę to napisać na ekranie.
A dlaczego przekierowanie? Z wygody programistycznej. CMS mieli jakiś
szablon zawierający dyrektywy, napotyka na jedną z nich generującą problem
(dokument nie istnieje) i robi przekierowanie do ogólnej formatki
komunikatu o błędzie przesyłając w tle treść tego komunikatu. URL
komunikatu zawsze jest wtedy taki sam. Można więc łatwo zrobić coś takiego,
że tworzymy funkcję message(treść) i wywołujemy ją. Byłoby idealnie gdyby
było to możliwe z kodem 404 ... ale jak widzę nie jest. Bo tylko 3xx to
umożliwiają.
Znacznie trudniej będzie mi zamiast prostego przekierowania przerwać
parsowanie formatki, załadowanie innej i rozpoczęcie parsowania od nowa.
-
15. Data: 2012-06-14 21:18:50
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: Artur Muszyński <a...@u...wytnijto.com.pl>
W dniu 2012-06-14 13:41, Marek pisze:
> Mi chodziło o 2 aspekty co do przekierowania. Mianowicie zależy mi na
> personalizacji treści komunikatu. Jeśli strony nie ma a ktoś uważa, że to
> błąd, to chciałbym aby przesłał mi ID tej strony. Wiele ludzi nie ma
> pojęcia co to URL itp. Dlatego wolę to napisać na ekranie.
Po co w ogóle użytkownikowi głowę zawracać. Wrzucaj info do
logu/bazy/maila do admina.
> A dlaczego przekierowanie? Z wygody programistycznej. CMS mieli jakiś
> szablon zawierający dyrektywy, napotyka na jedną z nich generującą problem
> (dokument nie istnieje) i robi przekierowanie do ogólnej formatki
> komunikatu o błędzie przesyłając w tle treść tego komunikatu. URL
> komunikatu zawsze jest wtedy taki sam. Można więc łatwo zrobić coś takiego,
> że tworzymy funkcję message(treść) i wywołujemy ją. Byłoby idealnie gdyby
> było to możliwe z kodem 404 ... ale jak widzę nie jest. Bo tylko 3xx to
> umożliwiają.
W modelu MVC nie musisz mieć przekierowania. Widzę, że moc jeszcze na
ciebie nie spłynęła ;-)
artur
-
16. Data: 2012-06-15 10:52:56
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: desertman <d...@p...onet.pl>
W dniu 2012-06-13 19:13, Marek pisze:
> No i świetnie... ale przekierowanie to nie kod 404 lecz któryś z serii 300.
> Mogę w komunikacie ustawić<meta> na "noindex" ale to nie zadziała jak 404
> z punktu widzenia wyszukiwarki. Zauważyłem, że jeśli strona jest już
> zindeksowana, to taką pozostanie jeśli nie dam wyraźnie 404. Jak to
> rozwiązać?
Nie wiem czemu chcesz zrobić przekierowanie.
W PHP możesz to w prosty sposób, zrobić mniej więcej tak:
<?php
/**
* Funkcja pobiera z bazy artykuł i go wyświetla,
* jeżeli artykułu nie znaleziono to tworzony jest
* komunikat o błędzie i wywoływana jest funkcja
* wyświetlająca stronę z błędem 404, zawierająca
* dowolny komunikat błędu (przekazywany jako parametr).
*/
function showArticle($id)
{
$article = $db->getArticle($id);
if($article)
echo $article;
else
show404Page('Nie znaleziono strony o ID = ' . $id);
}
/**
* Wyświetla stronę 404 - Page not found,
* z dowolnym komunikatem przekazanym w parametrze $message
*/
function show404Page($message)
{
header("HTTP/1.1 404 Not Found");
echo $message;
}
?>
Oczywiście to jest uproszczony przykład, który pokazuje tylko zasadę.
--
desertman
-
17. Data: 2012-06-15 18:48:23
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: Marek <p...@s...com>
Dnia Thu, 14 Jun 2012 21:18:50 +0200, Artur Muszyński napisał(a):
>
> Po co w ogóle użytkownikowi głowę zawracać. Wrzucaj info do
> logu/bazy/maila do admina.
Tak, to dobre rozwiązanie i chyba rozwiąże temat.
> W modelu MVC nie musisz mieć przekierowania. Widzę, że moc jeszcze na
> ciebie nie spłynęła ;-)
Ależ wiem, że nie muszę i przecież wcale się przy tym nie upieram. :-) Mało
tego - do tej pory nie interesowałem się 404 lecz wyświelałem "message" z
"noindex" w meta, że danej strony nie ma. Jednakże po niewczasie
stwierdziłem, że rozwiązanie ma wadę: Google przestały chcieć usuwać strony
raz zindeksowane a teraz posiadające "noindex". No i szukam obejścia
takiego aby nie narobić się za bardzo. Gdyby dało się wysłać 404 i
przekierować do komunikatu z błędem, byłoby idealnie. Ale skoro nie da się
- to trudno. Muszę oprogramować obsługę 404 bez przekierowania...
-
18. Data: 2012-06-15 18:57:28
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: Marek <p...@s...com>
Dnia Fri, 15 Jun 2012 10:52:56 +0200, desertman napisał(a):
> Oczywiście to jest uproszczony przykład, który pokazuje tylko zasadę.
Tat tak, właśnie coś takiego implementuję. To jest trochę bardziej złożone
na poziomie CMS gdyż komunikat powinien być wyświetlony w szacie graficznej
danego projektu plus kilka innych zagadnień. Chciałem uniknąć nadmiernej
grzebaniny również po stronie redakcyjnej gdzie będzie definiowana obsługa
błędów 404 (przewiduję różną dla róznych typów dokumentów). No ale cóż...
skoro trzeba to trzeba...
-
19. Data: 2012-06-15 20:56:41
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: Mirosław Zalewski <miniopl@CUT_THIS.gmail.com>
czwartek, 14 czerwca 2012 13:41. Wielka mądrość na czytelników pl.comp.www
spłynęła, gdy tako rzekł(a) Marek:
> Z wygody programistycznej. CMS mieli jakiś
> szablon zawierający dyrektywy, napotyka na jedną z nich generującą problem
> (dokument nie istnieje) i robi przekierowanie do ogólnej formatki
> komunikatu o błędzie przesyłając w tle treść tego komunikatu. URL
> komunikatu zawsze jest wtedy taki sam.
Zrezygnuj z tej wygody programistycznej na rzecz wygody użytkownika. Jedną
z bardziej wkurwiających rzeczy w Internecie jest przekierowywanie na osobną
podstronę z błędem.
Prosty przykład: użytkownikowi zdarzyło się zapamiętać adres tej części
serwisu, która go interesuje (ponieważ używasz zrozumiałych dla człowieka
adresów URL, prawda?) -- dajmy na to domena.net/motoryzacja/news/. Zechciał
ten adres wpisać ręcznie. Pomylił się i wpisał domena.net/motoryazcja/news/.
Teraz zamiast kliknąć na pasek adresu i poprawić literówkę, jest na stronie
domena.net/404.html i musi cały adres URL konstruować od nowa.
--
Niżej podpisany, zamieszkały w http://minio.xt.pl ,
Mirosław Zalewski
-
20. Data: 2012-06-16 13:54:18
Temat: Re: Jak zrobić stronę błędu 404 w CMS?
Od: Artur Muszyński <a...@u...wytnijto.com.pl>
W dniu 2012-06-15 18:48, Marek pisze:
> Ależ wiem, że nie muszę i przecież wcale się przy tym nie upieram. :-) Mało
> tego - do tej pory nie interesowałem się 404 lecz wyświelałem "message" z
> "noindex" w meta, że danej strony nie ma. Jednakże po niewczasie
> stwierdziłem, że rozwiązanie ma wadę: Google przestały chcieć usuwać strony
> raz zindeksowane a teraz posiadające "noindex". No i szukam obejścia
> takiego aby nie narobić się za bardzo. Gdyby dało się wysłać 404 i
> przekierować do komunikatu z błędem, byłoby idealnie. Ale skoro nie da się
> - to trudno. Muszę oprogramować obsługę 404 bez przekierowania...
Nawet, gdyby było można, to i tak to wprowadza zamęt, bo agent czy
operator miałby problem z ustaleniem brakującego zasobu. Po
przekierowaniu widać w adresie zupełnie inny URL oraz... czy strona, na
którą przekierujesz, dajmy na to 404notfound.html powinna mieć status
200 czy 404 ;-)
Ponadto nie ma żadnej gwarancji, że faktycznie zobaczysz treść tej
strony, a tym bardziej, że zostanie wykonane przekierowanie. IE w
pewnych sytuacjach wyświetla własny komunikat.
artur