Autor Zpráva
dolly1010
Profil
Přestěhoval jsem stránku z www.mylms.ic.cz na www.mylms.cz.
Teď bych potřeboval, aby když někdo zadá, nebo ve vyhledávači najde odkaz na původní stránku a klikne na něj, aby byl přesměrovanej přímo na novou stránku.

Zkoušel jsem do souboru .htaccess vložit kód např.

Redirect 301 /abcdef http://www.mylms.cz/text-digitronove-hodiny/
Redirect 301 /index.php?text=206-digitronove-hodiny http://www.mylms.cz/text-digitronove-hodiny/

přitom první řádek funguje ( www.mylms.ic.cz/abcdef ) a druhej ( www.mylms.ic.cz/index.php?text=206-digitronove-hodiny ) nefunguje.
Zřejmě je problém s tím, že adresa obsahuje parametr (?), nebo že existuje. Jde s tím něco udělat, nebo bude potřeba každou stránku přesměrovat jiným způsobem?

Před otazník jsem ještě zkoušel dát zpětné lomítko, ale to taky nefungovalo

Redirect 301 /index.php\?text=206-digitronove-hodiny http://www.mylms.cz/text-digitronove-hodiny/

dál jsem koušel nějaký "experimenty" s RewriteRule, ale ani to se mi nepodařilo...

Díky :)
Kajman
Profil
Můžete použít mod_rewrite s testováním části za otazníkem v RewriteCond. Případně si přesměrování vyvolat v tom index.php.
dolly1010
Profil
Moc "mod_rewrite" nerozumím...

Kdybych si tedy zjistil parametr "text" adresy (?) a pak bych ho v podmínce vyhodnotil a podle toho bych udělal přesměrování na jinou adresu.

Většina stránek odpovádá vzoru "/index.php?text=[číslo]-adresa" na staré stránce a "/text-adresa" na nové stránce. Takže by to šlo nějak rozkouskovat v php aby se ze strany www.mylms.ic.cz/index.php?text=100-clanek udělal odkaz na www.mylms.cz/text-clanek.

V PHP moc neumím, ale zejtra to zkusím. Snad se budu mít čeho chytit :)
dolly1010
Profil
Teď mě napadlo, že pokud budu přesměrovávat přímo z index.php, bude to jenom obyčejný přesměrování (bez "301 moved permanently"). Takže by to bylo asi opravdu lepší pořešit přes .htaccess

Nemá ještě někdo nějaký nápady? Popřípadě nejakou ukázku kódu :(
Davex
Profil
Přesměrování podle parametru by se dalo udělat takto:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^text=[0-9]+-(.+)$
RewriteRule ^ http://www.mylms.cz/text-%1? [R,L]

Z proměnné %{QUERY_STRING} se přečtou parametry, regulárním výrazem se zkontroluje, že obsahují text=[číslo]-adresa, adresu si zapamatuje do proměnné %1, která se potom použije v přesměrování.
dolly1010
Profil
Tohle bych asi dohromady nedal.
Díky moc, funguje to perfektně :)
dolly1010
Profil
Ještě takovej dotaz. Na původní stránce byli odkazy (je jich asi 5) např.

www.mylms.ic.cz/index.php?clanek=22
www.mylms.ic.cz/index.php?clanek=23

atd...

Tyhle odkazy nemaj přesnej vzor jako předtím.
Šli by taky nějak přesměrovat součastně s tím předchozím. Třeba na adresu

www.mylms.cz/clanek-22 (nebo podobnou, na tom už nesejde)
Davex
Profil
Můžeš přidat další pravidlo s upraveným regulárním výrazem.

RewriteCond %{QUERY_STRING} ^clanek=([0-9]+)$
RewriteRule ^ http://www.mylms.cz/clanek-%1? [R,L]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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