21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Jirin
Profil *
Zdravim,
potrebuji poradit s mod_rewrite

Jedna se o tuto adresu:
http://www.f1-news.cz/8652.html

kdyz potom, projedes odkazy nahore nebo nalevo, tak tam je take to cislo.html ale musi tam byt jen www.f1-news.cz bez toho cisla

a druha otazka, jak udelat abych mohl nejak predavat i to jak automaticky skoci za tu adresu - myslim to s=1&m=1

ten kod mam takto:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.f1-news\.cz
RewriteRule ^(.*)\.html$ index.php?clanek=$1 [L,QSA]
centi
Profil
cislo.html
Ako potom chceš volať jednotlivé podstránky, keď tam nesmie byť názov tej stránky (8652.html napríklad)? :-)
Yuhů
Profil
jak zrušit to 8652:

DirectoryIndex 8652.html index.html

mod_rewrite je v tomto případě kanón na vrabce.

Druhé otázce absolutně nerozumím. Nepomohlo by smazat ten dolar?

Taky nevím, proč tam je to RewriteCond. Myslím, že by to šlo bez toho, ne?
VitaZ
Profil
Musíš mít v odkazu to "8652" ? Pokud si všímám, máš to číslo u všech odkazů v horním menu stejné. Pokud chceš předávat víc parametrů, dej je do statické adresy všechny před .html, např. takto:

http://www.neco.com/stranka-8652-101-202.html = http://www.neco.com/stranka.php?prom_1=8652&prom_2=101&prom_3=202

Zápis v .htaccess by pak vypadal asi takto:

RewriteRule ^stranka-(.*)-(.*)-(.*)\.html$ /stranka.php?prom_1=$1&prom_2=$2&prom_3=$3 [L,QSA]

V jednom souboru .htaccess můžeš mít samozřejmě několik pravidel (píšou se na nové řádky pod sebe) pro různé varianty odkazů (1 předávaná prom, 2 prom atd..)
Jirin
Profil *
Diky vsem, uz se mi to podarilo castecne vyresit, to s a m uz jede, ale porad mi tam dela neporadek to, ze v tech odkazech mi to vsude prepisuje, misto klasickeho index.php a co ma byt tam je vzdy ta adresa z adresniho radku a pak teprve co ma byt.
Jirin
Profil *
ted uz je ta stranka trochu jina - ten odkaz:

http://www.f1-news.cz/8664-1-1.html
VitaZ
Profil
Jirin
Zdá se mi, že to s těmi odkazy pěkně mastíš. Proč má ten odkaz takový divný tvar? Proč je v odkazu vždy to 8664-1-1? Nevím, jestli přesně chápeš co má vlastně mod_rewrite dělat?
Princip mod_rewrite je ve své podstatě velmi jednoduchý, ale problém je v tom, že zatím ve všech článcích, které jsem o tom četl na webu, je mod_rewrite popisován složitě a trochu divně:-(
Zkusím Ti to trochu srozumitelně nastínit:

1) Máš web s odkazy např. ve tvaru /index.php?promena1=hodnota1&promena2=hodnota2, protože se Ti takový tvar adresy nelíbí (např. kvůli SEO), je potřeba převést adresu do statického tvaru.

2) Do souboru .htaccess vložíš následující pravidlo:
RewriteEngine On
RewriteRule ^stranka-(.*)-(.*)\.html$ /index.php?promena1=$1&promena2=$2 [L,QSA]

3) zkusíš si zobrazit stránku /stranka-hodnota1-hodnota2.html, tato stránka se na tvém webu nikde nenachází, ale server Apache ví (má to přikázáno v .htaccess), že když mu příjde požadavek na takovou stránku, má místo ní zobrazit stránku /index.php?promena1=hodnota1&promena2=hodnota2. Protože v hranaté závorce za pravidlem není stanoveno přesměrování R=301, zůstane v adresním řádku prohlížeče pořád adresa /stranka-hodnota1-hodnota2.html a návštěvník vůbec nemusí mít tušení, že je mu podsouvána jiná stránka.


Princip mod_rewrite tedy nelze chápat jako přepisování dynamických stránek na statické, jak k tomu trochu zavádějícím způsobem svádí některé články (na Sově či Rootu).
Nejde o to, jak změnit např. adresu /index.php?promena1=hodnota1&promena2=hodnota2, ale o to, co udělat, když někdo zavolá stránku /stranka-hodnota1-hodnota2.html.
Jirin
Profil *
Děkuji za odpověď, toto vse teoreticky chapu, vlastne mi to i funguje. Tuto adresu, co tam mam ted je jen zacatek toho skladani, pak tam bude samozrejme hlavne ten nadpis clanku a za nim budou muset tyto cisla byt, a to z prosteho duvodu, potrebuji tam mit id (to ctyrmistne cislo), sekci a podskeci menu. (to jsou ty dve cisla)

Ted v teto fazi tam ma vse bez toho nadpisu, ten dam nakonec. A jde o to:

zadam: http://www.f1-news.cz/8664-1-1.html

a
pomoci tohoto pravidla:

RewriteRule ^([0-9]*)-([0-9]*)-([0-9]*)\.html$ /index.php?clanek=$1&s=$2&m=$3 [L,QSA]

mi to podsoupne stranku : http://www.f1-news.cz/index.php?s=1&m=1&clanek=8664
Vse je ok, ale pokud projedu odkazy, ktere jsou na strance, tak mi to tam hodi tu prepsanou stranku a za ni teprve nejake ty promenne. (Zatim nemam ty odkazy predelane pro tento mod_rewrite).

Doufam, ze jsem t osrozumitelne a ne moc dlouze;) nastinil. Pokud bys mel ICQ, muzes se mi ozvat na: 255896469 . Diky
Jirin
Profil *
Me se zda, ze mi to jakoby prepisuje ten index v odkazech za to na co to prelozilo:(
Kajman
Profil *
Musís si upravit všechny odkazy. Pokud použiješ href="?cosi" tak prohlížeč správně požaduje stránku http://www.f1-news.cz/8664-1-1.html?cosi a už se ti tam parametry perou.

Tedy odkazy typu "?cosi" změnit všude v kódu na "index.php?cosi" nebo třeba "/?cosi". Případě rovnou na cosi.html.
Jirin
Profil *
Aha, tka to bude pravdepodobne ono, diky moc!!
Toto téma je uzamčeno. Odpověď nelze zaslat.

0