Autor Zpráva
N3S4
Profil
Ahoj, mám problém. Potřebuji přesměrovávat stránky na nové ale pomocí Redirect 301 mi to dělá nějakou neplechu.

Pokud zadám pravidlo:
Redirect 301 /nejaky-clanek.p79.html http://example.xx.com/nejaky-clanek/

tak po kliknutí na původních stránkách na odkaz /nejaky-clanek mi to přesměruje ne na požadovanou stránku (http://example.xx.com/nejaky-clanek/) ale na stránku s id stejným jako na původní adrese, tedy na článek id79.

Podotýkám, že potřebuji přesměrovávat vše ale na nových stránkách, kromě stránky hlavní - indexu. Na původních stránkách mám cms SunLight a na nových mám WordPress.

Také jsem přemýšlel, že bych to udělal pomocí mod_rewrite:
RewriteEngine on
RewriteCond %{REQUEST_URI}  !=/
RewriteRule ^(.*)$ http://nova-domena.cz/$1 [R=301,L,QSA,NE]


ale to mě přesměruje na novou doménu se stejnou url (/nejaky-clanek.p79.html) ale já na nových stránkách mám úplně jiný styl url adresy.

Mohu tomu nějak zabránit?

Děkuji za pomoc.
Davex
Profil
N3S4:
na odkaz /nejaky-clanek mi to přesměruje ne na požadovanou stránku (http://example.xx.com/nejaky-clanek/) ale na stránku s id stejným jako na původní adrese, tedy na článek id79
Pro to nevidím důvod. Uvedený Redirect by neměl udělat vůbec nic, protože na URL /nejaky-clanek vůbec nezabere. V URL ani v Redirectu není id79, takže špatné přesměrování způsobuje něco jiného.

Také jsem přemýšlel, že bych to udělal pomocí mod_rewrite
To by bylo vhodné řešení, pokud jsou na nové doméně stejné adresy jako na staré nebo lze nové adresy jednoduše odvodit ze starých. Jestliže jsou adresy stránek zcela rozdílné, tak je nejlepší přesměrovat ze staré domény PHP skriptem, který vyřeší převod adres.
N3S4
Profil
Davex:
Ten Redirect mám dobře, už jsem ho takto měl na jiných stránkách a fungovalo to správně. Akorát na obou byl stejný redakční systém - tedy stejné url adresy.

A v tom redirectu je id 79 a to v url: /nejaky-clanek.p79.html - je to adresa upravená pomocí mode_rewrite
a na nové doméně: /nejaky-clanek/ je také id článku 79 - ale také pomocí mod_rewrite převeden do "hezké" url (původně www.example.com/?p=79)

Jak tedy docílím, aby se z přesměrovávalo na mnou určenou url každého daného článku, když jsou url přeměněné pomocí mod_rewrite a na každé doméně používaný jiný redakční systém? Asi to nepůjde...

Jestliže jsou adresy stránek zcela rozdílné, tak je nejlepší přesměrovat ze staré domény PHP skriptem, který vyřeší převod adres.
Ano, adresy jsou zcela rozdílné. A toto přesměrování přes php skript bych provedl jak?
Davex
Profil
Kdyby bylo stránek jen pár, tak by je šlo jednotlivě přesměrovat i pomocí mod_rewrite.
RewriteEngine On
RewriteRule ^masna\.html http://www.example.com/reznik-jan-bezpalec? [R=301,NE,L]
RewriteRule ^chemodroga\.html http://www.example.com/drogerie-parfumerie? [R=301,NE,L]
RewriteRule ^eso\.html http://www.example.com/lahudky-u-supa? [R=301,NE,L]
RewriteRule ^tuzex\.html http://www.example.com/smisene-zbozi? [R=301,NE,L]

K přesměrování víc URL se mod_rewrite nehodí. Podle situace můžeš mít na starém webu přesměrovávací skript jako chybovou stránku (ErrorDocument 404 /presmeruj.php) nebo na něj přepisovat mod_rewrite pravidlem. Skript si pak přečte původní URL, v asociativním poli nebo v databázi najde nové URL a přesměruje na něj pomocí HTTP hlavičky:

session_write_close();
header('Location: http://' . $nova_domena . $nova_cesta);
header('Connection: close', true, 301);
N3S4
Profil
Na stránkách není moc článků (naštěstí), takže jsem to udělal pomocí RewriteRule a funguje to skvěle :)

Jen maličký dotaz: v tom zápise se píše to lomeno proč?
^tuzex\.html


Díky moc za rady.
Davex
Profil
Je to regulární výraz, kde mají tečky speciální význam (zastupují libovolný znak) a musí se proto escapovat lomítkem.
N3S4
Profil
Aha, a je možné, že mi to funguje i bez toho lomítka?

v htaccess mám (doména je vymyšlená):
RewriteRule ^navstevni-kniha.p13.html http://www.novadomena.g6.cz/navstevni-kniha/? [R=301,NE,L]
Dero
Profil
N3S4: „Aha, a je možné, že mi to funguje i bez toho lomítka?

Zastupuje opravdu libovolný znak, tedy i tečku. Vašemu pravidlu však vyhoví i stránka např.
navstevni-knihaQp13Qhtml
N3S4
Profil
Ale když to mám bez toho lomítka, tak to nevadí, ne?

Nebo to musím mít přímo takto:
RewriteRule ^navstevni-kniha\.p13\.html http://www.novadomena.g6.cz/navstevni-kniha/? [R=301,NE,L]
?

Já jen, aby to nědělalo nějakou neplechu..
Davex
Profil
N3S4:
V tvém případě je to asi jedno. Když proti těm zpětným lomítkům něco máš, tak si je tam nedávej.
N3S4
Profil
:D nic proti nim nemám, jen jsem již měl přesměrování hotové (akorát přes Redirect 301, které nefungovalo viz první můj příspěvek) a nechce se mi tam všude přidávat znova další věc...

A pokud to není nijak závažná chyba, nechám to jak to mám nyní :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0