Nová verze webu a staré odkazy s přesměrováním

superbobo75
13. dub 2015 14:14 - 13. dub 2015 16:21 #121321
Zdravím,

při změně webu včetně struktury, kde jsou ale samotné články zachovány potřebuji přesměrovat jejich původní NO SEF URL na SEF URL. Mám nastavené SEF URL v systému, zprovozněn htaccess, a URL se správně generují v rámci webu. Ale u zaindexovaných odkazů se škaredým odkazem si nevím rady.

Předpokládal jsem, že bude stačit něco takového zadat do htaccess:
RewriteRule ^index.php?option=com_content&view=article&id=85&Itemid=93$ http://www.domena.cz/nové-url [R=301,L]

Ale to nefunguje. Odkaz stále zůstává ten původní a nikam se nepřesměruje

Po různém testování jsem zjistil, že hlavní problém je, že nejde přesměrovat samotné domena.cz/index.php na www.domena.cz . Takže pokud se vyskytuje i jako součást url, tak to dopadne stejně. Pokud se snažím přes RewriteRule přesměrovat funkční SEF URL na jinou SEF URL také to není problém.

Pročetl jsem všechny možné postupy, jak se zbavit index.php, ale všechny pojednávají o případu, když není v systému joomly zapnutý SEO. V tomto případě zapnuté je, a odkazy SEF SEO vypadají v pořádku - domena.cz/nejaky-odkaz.
Kde se např. setkáme s odkazováním na index.php i když už je zapnuté SEF URL je např. chybová stránka, kde je v základní šabloně na toto odkazováno.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Bong
13. dub 2015 16:36 - 13. dub 2015 16:38 #121324
Zkuste si to trochu nastudovat, je to vcelku jednoduché. Půjčím si nejjednodušší příklad v www.jakpsatweb.cz :

RewriteEngine on
RewriteRule pozadovany-soubor\.html /vysledny-soubor.html [R]

V čem myslíte, že se to liší od toho vašeho?

www.jakpsatweb.cz/server/mod-rewrite.html
www.jakpsatweb.cz/server/mod_rewrite/mod-rewrite-priklady.html

I'm sorry, my responses are limited...you must ask the right questions.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
13. dub 2015 18:12 #121327
Nebo použijte přímo komponentu přesměrování v Joomle - povolíte plugin, a v komponentě jen zadáváte staré URL - nové URL. V pluginu si navíc můžete povolit zachytávání 404 stránek a tak zjistíte kam Vám ještě lidi lezou, a co nemáte přesměrované.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od superbobo75
13. dub 2015 22:07 - 13. dub 2015 22:17 #121330
Jestli myslíte tím RewriteEngine on, tak v tom se to neliší. Protože píšu, že SEO URL mám v systému zapnuté, tedy včetně nastavení htaccess kde je standardně odkomentované RewriteEngine on. Takže jsem popisoval jen to, co by bylo navíc od základního vzhledu joomla htaccess.
Pokud něco jiného, tak asi špatně koukám, a ty další prvky jako ^$r-301,L nemají vliv na nefunkčnosti toho, co popisuji.
Pokud zadám do htaccess toto: RewriteRule ^test$ www.domena.cz/new-test [R=301,L] - tak mi to v pohodě funguje

Ad Cony:
s tím to pluginem v uvedeném případě taky nefunguje. Zkoušel jsem to i na úplně nové joomle. Funguje to v případě, že odkaz není funkční A to ještě v případě, že odkaz dříve odkazoval na nějakou komponentu, tak to při přesměrování zobrazí pokaždé např. toto:

Upozornění
Při nahrávání komponenty došlo k chybě: com_joomgallery, Komponenta nebyla nalezena

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
13. dub 2015 22:45 #121331
Takže pokud tomu rozumím, řešíte

1/ přeměrování non SEF URL na SEF variantu u stávajících funkčních odkazů, kde Vás štve jen to, že je google indexuje s nehezkým URL - tady by Vám mohl pomoci nějaký plugin

2/ přesměrování již nefunkčních URL, které končí chybou 404, kamsi jinam - tady Vám musí fungovat ten plugin přesměrování.
Zkoušel jsem např:
www.example.com/index.php?option=com_blbost&view=contact&id=1
nasměřovat na /kontakt a v pořádku to projde. Zapněte si to zaznamenávání 404 URL a jen doplňujte kam to má jít, jen to nenchávejte dlouho zaplé, nebo to máte za chvíli plné pokusů o zjišťován složky phpMyAdmin apod. od robotů.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
13. dub 2015 22:49 #121332
Ad RewriteRule - s parametry nelze takto pracovat, musel by jste si podmínku složit cca takto:
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=85&Itemid=93$
RewriteRule ^index\.php$ /nova-stranka [L]
Ale řešil by jste to pro všechny možné kombinace parametrů - nějaký plugin bude v tomto spolehlivější řeení.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od superbobo75
13. dub 2015 22:57 #121333
Cony:

1. zkusím uvedený plugin. Původně jsem předpokládal, že se bez tohoto obejdu.

2. Ano v případě, že odkaz nefunguje tak mi stačí interní plugin přesměrování. Jenom upozorňuji na případ, že původní odkaz který již nefunguje, odkazoval na nějakou komponentu, tak při jeho přesměrování v tomto pluginu zobrazuje vždy uvedené upozornění ohledně původní komponenty. Což je docela pitomé. Zkuste to např. s tímto odkazem index.php?option=com_joomgallery&view=gallery&Itemid=63

3. Ad RewriteRule - ano máte pravdu, takto to nemůže fungovat. Ale v rámci joomly htaccess mi nefungují ani tyto pravidla.

Jinak děkuji moc za trpělivost

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
14. dub 2015 00:47 - 14. dub 2015 00:47 #121334
ad 2/ zadejte ten odkaz kompletní, tj.
http://www.example.com/index.php?option=com_joomgallery&view=gallery&Itemid=63
pak by to mělo fungovat.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od superbobo75
14. dub 2015 11:28 #121343
Cony: to na to nemá vliv, ale zjistil jsem, že se to ukáže návštěvníkovy pouze poprvé, když to chybové oznámení křížkem zavře, tak už se mu příště nezobrazí.

Zkusil jsem ještě další pluginy mimo interního Přesměrování

plugin non sef to sef - funguje ale pouze když původní odkazy jsou stále ve stejné hierarchii kategorií připadně menu. Pokud původní odkaz není ve stejné hierarchii, vyhodí odkaz chybu. Pokud plugin vypnu, zobrazí se odkaz jako článek bez souvislosti k menu.

plugin redj - pokud chci přesměrovat odkaz který je funkční ale je v rámci hierarchie jinde musím z tabulky u odkazu smazat index.php? a začít rovnou option=com.... atd. Ale přesměrování funguje. Celkově funguje lépe než interní plugin přesměrování.

Ale pokud chci toto pro více odkazů, tak by bylo nejrychlejší řešení v rámci htaccess, ale i zde uvedené příklady neměly žádný vliv. Zkoušel jsem to z vypnutými i zapnutými pluginy pro presměrování. Můžete mi prosím někdo napsat opravdu funkční řešení? Myslím si, že by to pomohlo i ostatním. Ono ani index.php nejde přesměrovat na bezindexový odkaz.
Jak se vytváří pravidla v htaccess jsme přečetl dost, ale v tomto případě mi nic nefunguje, ale je pravda, že i po přečtení je to pro mě stále dost španělská vesnice.

Ale předpokládám že se to nějak bije s nastavenim htaccess co má joomla.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
14. dub 2015 11:58 #121347

superbobo75 napsal: Ale předpokládám že se to nějak bije s nastavenim htaccess co má joomla.

No a kam to do toho .htaccess píšete? Ty pravidla by měly být před standardním přesměrováním Joomly, v htaccess, který pochází přímo z instalace je dokonce vyznačené místo - Custom redirects.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.