Autor Zpráva
Václav Troják
Profil
Zdravím,
mám problém se špatně zaindexovanými a odkazovanými stránkami, kde jsou v adrese dvě lomítka za sebou např. www.neco.cz/adresar//stranka.html,
z čehož pramení další a další špatně indexované stránky i odkazy na ně (vzhledem k relativním odkazům z podadresářů a podstránek má adresa i 7 lomítek za sebou)
Týká se to jednoho adresáře. Chybný odkaz se dvěma lomítky se na webu nikde nevyskytuje, stránky a sitemap jsem prohledal asi 100x ale google mi je stále vypisuje dál a dál se 404
Stačilo by 'adresar//' presmerovat na 'adresar/', a melo by být po problému(snad)
Zkusil jsem podle návodu přesměrování v .htaccess:

RewriteEngine On
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^www.neco.cz/adresar//
RewriteRule (.*) http://www.neco.cz/adresar/$1 [R=301,QSA,L]

ale to mi nefunguje, zřejmě to nebude správně.
Mohl byste někdo poradit?
Kajman
Profil
Zkuste něco jako
RewriteBase /
RewriteCond  %{REQUEST_METHOD}  !=POST
RewriteRule ^(.*[^/])?//+([^/].*)?$ $1/$2 [R=302,L,NE]

Až si budete jistý, že to funguje přesně, můžete si dát 301.
Václav Troják
Profil
Zdravím a díky,
bohužel to nepomáhá. Pokud je chybný odkaz ve tvaru
www.neco.cz/adresar//adresar/stranka.html
zůstava tak i nadále a na
www.neco.cz/adresar/adresar/stranka.html
se nezmění
Mimochodem používám toto přesměrování www na bez www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.neco.cz
RewriteRule (.*) http://neco.cz/$1 [R=301,QSA,L]

a zajímavé je, že pokud zapíši chybný odkaz ve formátu:
http://www.neco.cz/adresar//adresar/stranka.html
tak toto přesměrování ta dvě lomítka odstraní a výsledek je
http://neco.cz/adresar/adresar/stranka.html
což nechápu, protože by to mělo vypsat vše co je za 'www.neco.cz', včetně těch dvou lomítek

Ještě jen technická: Vámi navrhované řešení jsem umístil do .htaccess v rootu před výše zmíněné Rewrite
Kajman
Profil
Václav Troják:
Pokud je chybný odkaz ve tvaru
www.neco.cz/adresar//adresar/stranka.html
zůstava tak i nadále a na
www.neco.cz/adresar/adresar/stranka.html

Což odpovídá požadavku v první příspěvku. Chtěl jste oddělat duplicitní lomítka.

Ty adresy pak zpracováváte v nějakém php skriptu nebo to máte opravdové html soubory v adresářích? V php by se opakující adresář dal detekovat jednoduše - oprava adresy přesměrováním by byla lepší tam.

a zajímavé je,... což nechápu

Prostě dojde postupně ke dvěma přesměrováním.

A dejte sem odkaz na stránky, třeba tam někdo najde zdroj chybných adres - ten je totiž vhodné opravit nejdříve.
Davex
Profil
Kajman:
Ty adresy pak zpracováváte v nějakém php skriptu nebo to máte opravdové html soubory v adresářích?
Viděl jsem web, co má Václav Troják v profilu, a podle všeho jsou tam statické html soubory. Na Googlu jsem si nevšiml stránek zaindexovaných s vícečetným lomítkem v adrese a není mi jasná příčina jejich vzniku.

Na statických stránkách jsou použité relativní adresy v odkazech <a href="../adresar/soubor.html">, takže ze stránky na adrese s dvojitým lomítkem může vzniknout adresa se zdvojeným adresářem.

http://www.example.com/adresar//stranka.html  -> odkaz ../slozka/list.html -> http://www.example.com/adresar/slozka/list.html

Václav Troják:
Mělo by to být vyřešeno přesměrováním výše [#2] a špatné adresy by měly samy zaniknout.
Václav Troják
Profil
Kajman:
Což odpovídá požadavku v první příspěvku. Chtěl jste oddělat duplicitní lomítka.

Ano to jsem chtěl, aby to co přijde jako požadavek '.../adresar//stranka.html'
bylo přesměrováno na '.../adresar/stranka.html'
Asi jsem to špatně popsal, ale po doplnění Vašeho příkladu do .htaccess se nic neměnilo a obě lomítka zůstala.

Ty adresy pak zpracováváte v nějakém php skriptu nebo to máte opravdové html soubory v adresářích?

Ano jsou to opravdové html soubory v adresářích a žádný php script nepoužívám :-(

Na stránkách jsem prošel a hledal chybný odkaz několikrát, ale nenašel.
Vím, že nějaký špatný odkaz právě se dvěma lomítky se začal 'generovat' v jednom konkrétním adresáři. Hledal jsem i v odkazech směřující na stránky, zda některý někde není špatně, ale nic.

Jde mi o to, že pokud někdo přes ten špatný odkaz přijde stránka se zobrazí, ale je rozsypaná
viz http://acesport.cz/en/ace_products/cycling/cycling.htm
ale za adresář 'ace_products/' si připište ještě to lomítko navíc (nechci tu nechávat právě můj problém jako zdroj špatného odkazu)

Prostě dojde postupně ke dvěma přesměrováním.

No právě že to je to divné:
Teď momentálně je v .htaccess jen moje přesměrování *s www na *bez www
Pokud se do adresního řádku s chybným odkazem, který obsahuje ta dvě lomítka ('ace_products//') vloží na začátek 'www.', tak jen toto samotné přesměrování způsobí to, že jednak odstraní z adresy www. což má udělat, ale odstraní i ta dvojitá lomítka.
Což znamená kdyby ten špatný odkaz byl ve formátu s www., tak by se tímto jedním přesměrováním moje patálie '//' záhadně řešila, a to je pro mne právě tou záhadou.
Co způsobuje to, že zbytek adresy za http://neco.cz/$1 se změní ?

Pokud chci opravdu takového 'efektu' docílit jednoduchým přesměrováním ze // na / (jak jsem uvedl v [#1] ), tak mi to ne a ne a nejde.
Váš příklad jsem odzkoušel, ale // za / mi také nenahradil.

Nejsem v tomto vůbec zběhlý, ale ne a ne a nedá mi to pokoj.

Díky za trpělivost


Davex:
Viděl jsem web, co má Václav Troják v profilu, a podle všeho jsou tam statické html soubory. Na Googlu jsem si nevšiml stránek zaindexovaných s vícečetným lomítkem v adrese a není mi jasná příčina jejich vzniku.

Google mi neustále vypisoval právě chybné adresy s // až ////////// za adresářem 'ace_products'
s kódem 404, tak jsem začal pátrat kde se to bere, ale nedopátral.
Jediné co se mi zatím povedlo, bylo vymazat je jako opravené, ale Google začal vypisovat znovu.
V robots jsem tedy zkusil zakázat indexování 'ace_products//' a snažím ty chybné adresy s dvojitým lomítkem přesměrovat, nic jiného už mě nenapadá.
Bohužel ani výše zmíněný příklad[#2] mi nefunguje.

Ještě jen ukázka toho, že to google někde bere
Kajman
Profil
Václav Troják:
Omlouvám se, špatně jsem třetí příspěvek přečetl.

Podle RewriteLogu to vypadá, že v RewriteRule už má apache pro testování to lomítko jen jedno, proto to takhle nefungovalo.

Proměnná REQUEST_URI obsahuje původní lomítka, tak je možné testovat ji...
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^(.*[^/])?//+([^/].*)?$
RewriteCond  %{REQUEST_METHOD}  !=POST
RewriteRule / %1/%2 [R=302,L,NE]

Jinak na vypátrání zdroje chyb by se dalo na nějaký čas použít místo toho pravidlo
RewriteCond %{REQUEST_URI} ^(.*[^/])?//+([^/].*)?$
RewriteCond  %{REQUEST_METHOD}  !=POST
RewriteRule / neexistujiciadresa [L]  
které vrátí chybový kód 404, a v google webmaster tools, pak bude v
Health -> Crawl Errors -> Not found
v detailu každé chybné adresy seznam adres odkazujících na verzi s více lomítky.
Václav Troják
Profil
Mnohokrát děkuji Kajman,

Váš příklad [#7] zabral, a dělá přesně to co jsem potřeboval.
Na nějakou dobu zkusím i pátrání kde se to vlastně vzalo.

Ještě jednou děkuji
P.S.
Jen ještě upřesním

google webmaster tools, pak bude v
Health -> Crawl Errors -> Not found
v detailu každé chybné adresy seznam adres odkazujících na verzi s více lomítky.

Google už mi tam ty adresy nějakou dobu vypisuje :



Všechny vícelomítkové odkazy jsou dále a dále odkazovány z již těch vícelomítkových.
Na dvoulomítkový odkazuje třílomítkový atd.
Když se však dostanu jakoby na ty první adresy, které by to měly způsobovat,
tak u nich v detailu není žádná adresa, která na ni odkazuje. :-(

Proto jsem vzdal po několika měsících pátrání, a chci to vyřešit právě oním přesměrováním

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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