Autor Zpráva
Sylar
Profil
Zdravím,
potřebuji na webu změnit url jedné stránky. chtěl jsem to udělat přes htaccess takto
RewriteRule /index.php?page=seo-optimalizace http://www.becorp.cz/optimalizace-pro-vyhledavace-seo/ [R=301]

nebo takto
RewriteRule /seo-optimalizace/ http://www.becorp.cz/optimalizace-pro-vyhledavace-seo/ [R=301]

ale stránka tento zápis ignoruje, stránku nepřesměruje a protože stránka /seo-optimalizace/ už nefunguje tak hodí 404ku.

mohl by mi někdo poradit čím to je?

toto je celý htaccess
RewriteEngine On
RewriteBase /

# doplnění zpětného lomítka
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ %{REQUEST_URI}/ [R=301,L]

# přesměrování na www
RewriteCond %{HTTP_HOST} ^becorp.cz
RewriteRule (.*) http://www.becorp.cz/$1 [R=301,QSA,L]

# cool URL - page
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/?$ ?page=$1 [QSA]

RewriteRule /index.php?page=seo-optimalizace http://www.becorp.cz/ [R=301]


// edit: na webu je nyní stránka /seo-optimalizace/ funkční, změnil jsem to zpět, než tento problém vyřeším
Kajman_
Profil *
Bude to úvodním lomítkem, které při zpracování souborů v .htaccess není (naopak je tuším v pravidlech dávaných přímo do konfigurace apache).
Sylar
Profil
Kajman:
odstranil jsem úvodní zpětné lomítko, ale stále mi to na stránce hodí 404ku, namísto přesměrování.

upravil jsem htaccess a url stránek, aby ses na to mohl příp. kouknout i na stránce.
Nyní by se tedy url www.becorp.cz/optimalizace-pro-vyhledavace-seo měla přesměrovat na http://www.becorp.cz/seo-optimalizace , jenže co se nestane
Zkouším v htaccessu jak cool adresy, tak s viditelnými parametry (viz. ukázka níže), přehazovat je mezi ostatními částmi, jestli se náhodou navzájem neovliŇují, ale stále nic. prostě stránka toto přesměrování ignoruje.
RewriteEngine On
RewriteBase /

Redirect 301 index.php?page=optimalizace-pro-vyhledavace-seo http://www.becorp.cz/seo-optimalizace/

# doplnění zpětného lomítka
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ %{REQUEST_URI}/ [R=301,L]

# přesměrování na www
RewriteCond %{HTTP_HOST} ^becorp.cz
RewriteRule (.*) http://www.becorp.cz/$1 [R=301,QSA,L]

# cool URL - page
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/?$ ?page=$1 [QSA]
Kajman_
Profil *
Sylar:
Nyní by se tedy url www.becorp.cz/optimalizace-pro-vyhledavace-seo měla přesměrovat na http://www.becorp.cz/seo-optimalizace

Žádné takové pravidlo tam nemáte.

Na začátek pravidel zkuste dát.

RewriteBase /
RewriteRule ^optimalizace-pro-vyhledavace-seo/?$ seo-optimalizace/ [R=302,L]
Sylar
Profil
Kajman:
aha aha, ten váš zápis funguje, díky. ale přesto se musím zeptat. co tedy dělá tohle?
Redirect 301 index.php?page=optimalizace-pro-vyhledavace-seo http://www.becorp.cz/seo-optimalizace/[/pre]

na jpw.cz jsem našel, že se tohle používá právě při přesměrování. jsem z toho tredka trošku zmatený.

a ještě k tomu vašemu zápisu. potřebuji toto přesměrování udělat natrvalo, změnil jsem tedy R=302 na R=301, jen nevím k čemu je na konci to L ?
Kajman_
Profil *
Myslím, že redirect nepodporuje testování query stringu.

L značí ukončení aktuálního projíždění pravidel. 302 je lepší pro ladění.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0