Autor Zpráva
miro.k
Profil
Ahojte, poprosím Vás o radu.

V Google Webmaster Tools som zistil, že Google mi indexuje stránky s URL adresou v tvare:

http://www.hocico.sk/kategoria/strana-1.php/strana-1.php.

Súbor "strana-1.php" sa nachádza v adresári "kategoria" a neexistuje tam uz ziadny iny podadresar, preto takáto URL adresa by mala vyhodiť kód 404.

Po zadaní tejto URL adresy do prehliadača som z hrôzou zistil, že takáto adresa nevygeneruje chybu 404, ale zobrazí stránku "strana-1.php". Táto stránka je však zobrazená nekorektne, nakoľko sa nenačíta css súbor a navyše mi generuje linky na neexistujúce stránky.


Prosím Vás, vie mi niekto poradiť kde môže byť chyba?

Ďakujem,
Miro
DJ Miky
Profil
Prosím Vás, vie mi niekto poradiť kde môže byť chyba?

Primárně v tom, že se na danou stránku Google nějakým odkazem dostal, a sekundárně v tom, že nevyhodí chybu 404 (nebo alespoň nepřesměruje s kódem 301 na správnou adresu). Bez dalších informací ti těžko může někdo podrobněji poradit. Ideálně je potřeba opravit obě chyby, tj. odstranit odkaz vedoucí na tuto adresu a zajistit správné vyhození 404 na neexistujících stránkách.
miro.k
Profil
Ten odkaz na neexistujúcu stránku sa tam dostal z externého prostredia a nemám možnosť ovplyvniť jeho odstránenie (je to zahraničná nereagujúca webstránka)

Ja musím vyriešiť, prečo sa na danej neexistujúcej adrese vôbec zobrazuje nejaký obsah, ktorý tam nemá čo hľadať a nie 404 stránka.

Tenko vypísaná časť URI adresy je správna, hrubo zobrazená tam nemá čo hľadať:

http://www.hocico.sk/kategoria/strana-1.php/strana-1.php .

Lomítko v URI adrese indikuje adresár a keď v adresári nič nie je, server predsa zobrazuje súbor "index.html". V mojom prípade neexistuje adresár "strana-1.php" a teda ani súbor "index.html" a mal by sa zobraziť kód 404. Napriek tomu sa zobrazí súbor "stránka-1.php" z korektnej časti URI adresy.

Jediný spôsob ako to ošetriť, ma teraz napadá, presmerovanie pomocou mod rewrite v .htaccess.

Ale aj tak ma štve, že neviem prísť na dôvod toho nekorektného zobrazovania.
Davex
Profil
miro.k:
Lomítko v URI adrese indikuje adresár
Nemusí to být jen pro určení adresáře. Pokud existuje skript strana-1.php, tak se vše za lomítkem předá tomuto skriptu v CGI proměnné PATH_INFO.

Do toho skriptu by mělo stačit přidat na začátek přibližně něco takového:

<?php

if (!empty($_SERVER["PATH_INFO"])) {
  header("HTTP/1.0 404 Not Found");
  header("Status: 404 Not Found");
  // odstranění části PATH_INFO z adresy
  $url = htmlspecialchars(str_replace($_SERVER["PATH_INFO"], "", $_SERVER["REQUEST_URI"]), ENT_QUOTES);
  die("<meta charset='utf-8'>Adresa stránky je chybná. Pokračujte prosím na adresu <a href='$url'>$url</a>. Ta by už mohla být správná.");
}

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0