Autor Zpráva
Jeremy88
Profil
Mám docela zvláštní problém s mod_rewrite a vůbec netuším jak ho vyřešit, protože jsem s tímto modulem ještě nikdy předtím nepracoval.

Chtěl jsem z dynamických adres odstranit parametry, zde je příklad:
z category.php?page=nejaka-kategorie/ na kategorie/nejaka-kategorie/

Vyzkoušel jsem asi 10 různých řešení co jsem našel na internetu (2krát jpw, interval.cz, zive.cz, myhtaccess.com, weblogy, něco bylo i zde v diskuzi atd.), ale buďto se mi po zadání "kategorie/nejaka-kategorie/" zobrazovali chybové hlášky (asi jsem ty příklady špatně předělal) anebo, a to ve většině případů, prohlížeč požadovanou stránku skutečně zobrazil, ale bez CSS a také obsahu, který se načítá z databáze podle url. Dále byly pozměněny všechny adresy v takto načteném dokumentu a to jako by byl root až za posledním lomítkem současné adresy, jestli mě chápete.

Pokoušel jsem se to nejdříve řešit jiným mod_rewrite zápisem, ale když se objevovala pořád ta samá chyba, tak jsem začal experimentovat s "RewriteBase /". Když ani to nepomohlo, přesunul jsem celý projekt do rootu na locahostu, jelikož byl v podsložce, ale výsledek byl pořád stejný - dokument se pod pozměněnou adresou sice načetl, ale byla to jen prázdná schránka bez obsahu, navíc bez stylů.

Mně to přijde jako dost zvláštní chyba, pokud jste se s tím už někdo setkali nebo máte s mod_rewrite více zkušeností, prosím pomozte mi vyřešit tuto zapeklitou situaci.
Předem díky.
japlavaren
Profil
no, neviem, hoď ten script
Kajman_
Profil *
Ta verze, kdy byly vypadené styly a divné odkazy byla z hlediska přepisování správná.

Jen musíte na celém webu opravit adresy, aby odpovídaly uměle vytvořené strunktuře.
Jeremy88
Profil
Diky za odpovedi.

Dukladne jsem si znovu precetl clanky na intervalu a s jejich pomoci jsem sice neco vyrobil, ale neni to zdaleka muj cil, tak mi snad s tim tady pomuzete.

Ted mi funguje toto:
- zazadam o http://localhost/rs/nadpis-clanku-ci-aktualizace.html a tam se zobrazi obsah dokumentu http://localhost/rs/article.php?page=nadpis-clanku-ci-aktualizace/ vcetne css, obsahu z databaze a "nepopletenych" url adres odkazu

- zavolam http://localhost/ifg-rs/uzivatel/jeremy88.html a zobrazi se obsah souboru http://localhost/ifg-rs/user.php?page=jeremy88/ vcetne css (po osetreni pomoci "../" v <link href="">) a obsahu databaze, ale se spatnymi adresami v dokumentu - url se chovaji, jakoby byl root za .../uzivatel/ coz je samozrejme nepripustne

V .htaccess je zatim tohle:
RewriteEngine On
RewriteRule ^uzivatel/(.*)\.html$ user.php?page=$1/ [L,QSA]
RewriteRule ^(.*)\.html$ article.php?page=$1/ [L,QSA]

Potrebuji tedy poradit s:
1) Opravenim adres v dokumentu, kdyz pouziji v umele vytvorene url adresar (/uzivatel/..., /kategorie/...). Musim to potom nejak specialne osetrovat nebo to lze vyresit uz primo pres mod_rewrite ?? Napadal me RewriteBase, bohuzel nevim jak presne jej pouzit.
2) Ty koncovky .html bych chtel vymenit za lomitka na konci, ale kdyz jsem to (nejspis dost nevhodne) udelal v tom mem zapise, tak mi nechteli vubec fungovat css styly ani po pridani nekolika ../ do <link href=""> a root pro dany dokument se zase posunul.
3) Chtel bych pouzivat vice moznosti, ne jenom /uzivatel/, ale i napr. /kategorie/, /statistika/, ... Ale opet nevim jak to zapsat, aby ty podminky navzajem nekolidovali.
4) Na JPW bylo pouzito nasledujici:
RewriteCond %{QUERY_STRING} ^page=([^&]+)$
RewriteRule ^index\.php$ %1.html? [R=301,L]
RewriteRule ^([^/]+)\.html index.php?rw=1&page=$1 [L,QSA]
A jestli to chapu spravne, tak se po zadani "staticke" ci "seo url" se nic nemeni, ale zazada se o jeji dynamicky protejsek, ale kdyz je zazadano pri o dynamickou adresu, tak je presmerovano [R] na tu spravnou statickou. Chapu to dobre ?? A nevite taky nekdo jak to udelat tak, aby to fungovalo v mem pripade ??

Diky moc za precteni a jeste mnohonasobne vic za odpoved, ktera me posune kupredu.
Jeremy88
Profil
Opravdu se nenajde nikdo, kdo by mi pomohl ?? Urcite mate s mod_rewrite daleko vic zkusenosti nez ja. Preci nechci nijak slozite veci, jen par uprav tech mych nedokonalych RewriteRule. Jestli vite nekdo jak na to, tak prosim, pordte. Predem diky.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0