Starší komentáře ke článku: Mod_rewrite pro hezká URL - RewriteEngine a RewriteRule

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Petr Zelenka

Datum vložení: 15.7.2005 8:40:49

Primlouvam se za pokracovani clanku. Tohle je totiz hodne prakticke a uzitecne tema.

Avatar

Autor komentáře: 4

Datum vložení: 15.7.2005 13:02:10

JJ, clanok o kvalitnej veci, ale chcelo by to trosku spadu, dalo by sa to cele napisat a publikovat este dnes ? :)

Avatar

Autor komentáře: Vojtech Schlesinger

Datum vložení: 15.7.2005 13:16:18

publikovani na intervalu ma svuj predem dany rad :) tudiz nejde vsehcno vypustit najednou, pekne to graduje postupne :))

Avatar

Autor komentáře: Pavel Prostřední

Datum vložení: 7.8.2005 0:20:53

Výborně! :) už se těším na další díly. Jen tak dále! :)

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 15.7.2005 9:24:29

Obcas sa oplati pridat aj T=application/x-httpd-php. Hlavne v situacii ked PHP bezi ako CGI (tam som to najcastejsie zazil), alebo su nastavene ine pripony pre php ako tie normalne :) RewriteRule ^(.*)\.html$ %{DOCUMENT_ROOT}/index.php?stranka=$1 [L,QSA,T=application/x-httpd-php]

Avatar

Autor komentáře: ho

Datum vložení: 15.7.2005 9:43:51

Chtel jsem se optat, mam stromovou strukturu menu, a samozrejme nevim do jakeho levelu bude norena. Chtel bych uri example.com/firma/kontakt/ Jak psat pravidlo "co presmerovat" kdyz nemuze vypadat ^(.*)\.html$ ale muze tam byt libovolne sekci firma/o-nas/cim-se-zabyvame/... Odkazy bych generoval pomoci rekurze ktera by mi vytvorila stromove cesty, ale nevim jak to zapsat do pravidla. Pokud predbiham, omlouvam se, tenhle clanek s i zaslouzi pokracovani!

Avatar

Autor komentáře: Vojtech Schlesinger

Datum vložení: 15.7.2005 10:03:15

slozitejsim strukturam se budeme venovat v pokracovanich :)

Avatar

Autor komentáře: ho

Datum vložení: 15.7.2005 10:42:56

super;) pro me ma mod_rewrite jedno omezeni, minimalne to, ze bych musel vzdycky nechavat schvalovat pravidla od adminu, kdo vi jak by byli rychli; atd; napadlo me jestli by to neslo udelat tak, ze bych si v menu udelal hezke odkazy; a pak by byl skript ktery by explodoval podle / promennou $_SERVER['REQUEST_URI'] a posledni prvek v poli by byl shodny s nakou polozkou v db v tabulce napr pages a podle toho by se vytahla stranka (s tim ze by se muselo osetrit to ze dve stranky muzou mit stejnou tu polozku v db, jako o-firme/kontakty/ a externisti/kontakty/)

Avatar

Autor komentáře: Vojtech Schlesinger

Datum vložení: 15.7.2005 10:47:52

kdyz muzeme neco vytahnout z db, je to primo skvely priklad na pouziti tzv. rewrite map. Ale o tom az v tretim, pripadne ctvrtem dilu. Budete si muset nejaky ten tyden jeste pockat :)

Avatar

Autor komentáře: ho

Datum vložení: 15.7.2005 11:57:18

urcite pockam;) tamto reseni je teda asi prasarna(?) aspon prozradte jestli rewrite map se pouzije spolu mod_rewrite, tedy zavislost na adminech... ja kdyz potrebuju spustit web treba v naky testovaci fazi, pro kazdy web bych musel nechavat schvalovat pravidla, proste je to zdrzovani... dik

Avatar

Autor komentáře: Vojtech Schlesinger

Datum vložení: 15.7.2005 12:02:34

aha, tak to je znacna nevyhoda hostingu. Princip map spociva v tom, ze se jen nacitaji ruzne kombinace url ze souboru (zjednodussene). Nicmene nevim, jak moc maji admini na vasem webhostingu tuto vec osetrenou. I tak to vami navrhovane reseni se da klidne pouzit, kdyz nejsou k dispozici vsechny dostupne prostredky, musi prijit na radu prasarny :))))

Avatar

Autor komentáře: Vojtěch Semecký

Datum vložení: 15.7.2005 9:47:19

[b]404[/b] Využití chybových stránek pro vytváření cool URI je dle mého naprosto nevhodné. Zkrátka věci se mají používat k tomu, k čemu jsou určeny. [b]mod_rewrite v Apachi od verze 1.2[/b] [i]"tudíž je skoro zaručeno, že i váš webhosting si s mod_rewrite poradí."[/i]. Toto tvrzení bohužel neplatí. Apache to samozřejmě umí, ale webhostingy to z bezpečnostních důvodů zákazníkům neumožňují a vůbec se jim nedivím. Špatně nastavenými pravidly pro mod_rewrite totiž snadno zablokujete celý server. Na požádání vám většinou přepisování nastaví sami, ale že byste měl možnost pravidla sám definovat pomocí .htaccess, na to zapomeňte. [b]Jiná možnost?[/b] Ještě stojí za zmínku podobný, ale jednodušší modul mod_alias.

Avatar

Autor komentáře: ci5

Datum vložení: 6.8.2005 2:16:27

Taky si myslím že by se věci měly používat k tomu k čemu jsou určeny.. Ale když už dojdou možnosti (síly, nervy, čas) tak [b]proč to neudělat přes 404.php?[/b] [b]Jaké konkrétní nevýhody to vlastně má?[/b]

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 6.8.2005 8:23:59

Žádné podstatné. Myšlenka využití chybové stránky 404 pro přesměrování vychází z takzvané "inteligentní" chybové stránky a je přímým předchůdcem specializovaných nástrojů typu mod_rewrite nebo mod_alias. Naopak výhodou "inteligentní" chybové stránky je, že si do ní můžete naprogramovat i věci, které tyto hyperspecializované nástroje nedělají ;-)

Avatar

Autor komentáře: maro

Datum vložení: 15.7.2005 12:56:40

Řeším něco takového, pomozte.. :) Každá stránka má své string-id. Je vhodnější použít české pro všechny mutace: neco.cz/cs/o-nas neco.cz/en/o-nas nebo pro každou mutaci jiné Sid. neco.cz/cs/o-nas neco.cz/en/about-us

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 15.7.2005 13:02:38

Stránky jsou primárně pro lidi, ne pro stroje. Z toho plyne, že je lepší tvořit URL v přirozeném jazyce návštěvníka. Ve vašem případě jde o druhou metodu. Časem zjistíte, že s touto metodou se pojí i další výhody ;-)

Avatar

Autor komentáře: ho

Datum vložení: 15.7.2005 13:20:18

a zvolit example.cz/cs/ example.cz/cz/ example.cz/czech/ ;))

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 15.7.2005 13:25:01

Pokud chcete používat v URL pouze značku jazyka, můžete použít první variantu nebo její alternativy (třípísmennou zkratku nebo zkratku složenou ze zkratky jazyka a zkratky státu, pro který platí). Ostatní varianty bych nepoužíval, mohou být matoucí a prodlužují URL ;-)

Avatar

Autor komentáře: maro

Datum vložení: 15.7.2005 22:16:39

Aha, dík. Místo "cs" mělo být samozřejmě "cz". Můžeš aspoň naznačit nějaké další výhody?

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 15.7.2005 22:31:39

[i]Místo "cs" mělo být samozřejmě "cz".[/i] Mohl bych se zeptat kde? Kód pro český jazyk je podle ISO "cs" nebo "ces", kód pro jazyk a stát je v našem případě vždy "cs-CZ". Žádné "cz" nikde nevidím ;-) Co se týče výhod a nevýhod tohoto přístupu, byly už mnohokráte diskutovány, zkuste si najít něco třeba na Interfóru nebo Hofylandu nebo na kterémkoli jiném fóru. Na první pohled například uhodí do očí lokalizovaná klíčová slova v URI shodná s jazykem dokumentu. A nevěřte, že je tento postup pracnější, v případě dynamických stránek je tvorba lokalizovaných URL stejně složitá jako těch nelokalizovaných ;-)

Avatar

Autor komentáře: Michal Kec (MiK)

Datum vložení: 15.7.2005 13:02:53

Z hlediska SEO i srozumitelnosti URL pro návštěvníky je vhodnější druhá varianta. Nicméně první je nesrovnatelně jednodušší. ;)

Avatar

Autor komentáře: Honza Spacil

Datum vložení: 15.7.2005 14:13:42

Diky moc za tuto serii clanku, jak uz bylo v hodne diskuznich forech zminovano, tohle tema je (v ceskem jazyce) velmi spatne popsano, jen par clanku .. Proto jsem rad, ze se zde tento imho mimoradne potrebny nastroj bude podrobneji 'probirat'.. Takze predem diky za dalsi pokracovani na toto tema, hodne mne (a asi nejen mne) pomohou :) .. Krasny den! honza

Avatar

Autor komentáře: naluc

Datum vložení: 15.7.2005 23:07:37

"... pro (ta) hezká URL" a nebo "... pro (ty) hezké URL"? Já vím, je to maličkost, ale nedá mi to ;)

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 16.7.2005 0:12:08

Může být "to hezké URL" a pak tedy "ta hezká URL", nebo také "ten hezký URL" (uniform resource [i]locator[/i]) a pak tedy "ty hezké URL" či snad "ty hezké URLs". Osobně si myslím, že nejlepší je první možnost ;-)

Avatar

Autor komentáře: naluc

Datum vložení: 16.7.2005 1:50:58

Ano, "ten locator" jsem měl na mysli. Nicméně mi přijde, že "to URL" se tak nějak zažilo, že to vlastně ani není potřeba dál řešit ;)

Avatar

Autor komentáře: Michal Aichinger

Datum vložení: 17.7.2005 11:28:45

Cau, mam na svem hostingu zapnutou moznost si v .htaccess nastavit mod rewrite, ale pokud do nej napisu i jen RewriteEngine On tak to zacne hlasit chybu ze nemam pristup ke korenovemu adresari /. Je to chyba u me, nebo je to spatne nastaveny na serveru?

Avatar

Autor komentáře: Milan

Datum vložení: 25.7.2005 21:08:49

Mám podobný problém. Chybu mi to hlásí hned u mě doma. Mám Apache 2.0.53 a PHP 5.0.4.

Avatar

Autor komentáře: Sahrk

Datum vložení: 29.7.2005 1:07:00

Při zapnutí Mod_Rewrite přestane fungovat DirectoryIndex. Pokud máte vypnuté IndexOptions tak server hlásí chybu o nemožnosti přístupu do adresáře, pokud si ho zapnete, uvidíte alespoň všechny soubory v adresáři. Musíte si nastavit přepisovací pravidlo na výskyt "/" aby přepsalo na "/index.php", nebo index který používáte.

Avatar

Autor komentáře: rad

Datum vložení: 25.7.2005 8:43:05

Zkouším přepsat vzkazy.html na vzkazy.php a vyhodí mě to 404. Nevidíte někde chybu? Díky RewriteEngine On RewriteRule ^vzkazy\.html$ %{DOCUMENT_ROOT} /vzkazy.php [L]

Avatar

Autor komentáře: m

Datum vložení: 25.7.2005 12:18:53

V zápisu %{DOCUMENT_ROOT} /vzkazy.php nemá být mezera mezi } a /. Další zádrhel může nastat, pokud to ladíš na localhost. {DOCUMENT_ROOT} totiž ukazuje na výchozí adresář (viz DocumentRoot v httpd.conf) a pokud ladíš aplikaci umístěnou v nějakém podadresáři (např. moje\osobni\stranky), tak to soubor vzkazy.php nehledá v tomhle adresáři, ale v tom onom kořenovém adresáři z httpd.conf. Pokud se nemotáš v adresářích nahoru a dolů sem a tam, zkus to třeba i bez lomítka :-)

Avatar

Autor komentáře: martin

Datum vložení: 27.7.2005 11:43:06

Mě to prostě taky nefunguje. V httpd.conf jsem odpoznámkoval ten load modulu, v rootu jsem si udělal ten soubor kam jsem napsal: RewriteEngine On RewriteRule http://localhost/test.xml http://localhost/test.php [L] nebo RewriteEngine On RewriteRule ^test\.xml$ %{DOCUMENT_ROOT}/test.php [L] mám soubor test.php v rootu, soubor test.xml neexistuje. alespon tak jsem pochopil tu funkčnost. ale pořád dokola mi to hází 404 - stránka nenalezena. nevíte co s tim? děkuju.

Avatar

Autor komentáře: Jakub Hanák

Datum vložení: 28.1.2006 16:31:16

Mám ten samý problém, 404 chyba. Obsah .htaccess: RewriteEngine On RewriteRule ^test\.html$ %{DocumentRoot}/test.php [L] Zadám v prohlížeči test.html a nic se nestane. Modul mám povolený a netuším co s tím dál. Děkuju za radu.

Avatar

Autor komentáře: Martin Zvarík

Datum vložení: 5.10.2008 23:16:25

Mě to taky háže chybu! autor článku se k tomu nevyjadřuje??? Doporučuju %{Document... vůbec nepoužívat a namísto toho zvolit relativní cestu => ../test.php Pokud napíšete http://.../test.php tak to provede redirect - který se projeví změnou adresního řádku v prohlížeči.

Avatar

Autor komentáře: Vojtěch Schlesinger

Datum vložení: 6.10.2008 0:09:15

máte pravdu - na některých serverech je document root nefunkční. Upozorním na to v aktualizaci nebo pokračování článků. Buď použít relativní cestu (případně kombinovanou s RewriteBase) nebo použít absolutní, jak píšete...

Avatar

Autor komentáře: Karlosa

Datum vložení: 26.7.2005 1:38:56

Ahoj, prosím poradíte mi. Mám web v php a mysql a potřeboval bych poradit jak zakazát na serveru, aby mi nemohl nikdo hotlinkovat stránky. Doufám, že se vyjadřuju správně, protože nejsem úplný odborník. Prostě bych chtěl obhospodařit, aby mi nikdo nemohl na svých stránkách načítat obrázky z mých stránek přímým odkazem v img tagu. Jednoduše řečeno někdo si udělal stránky a pouze, aby mě brzdil, tak spouští stránku, kde jsou img tagy s odkazem na mé stránky k obrázkům a tím načítá hromadu obrázků aby mi dělal zle. Něco jsem zaslechl právě o Mod_rewrite, že by se to dalo tím vyřešit, ale nemám s tím žádnou zkušenost a tak moc prosím o radu. Díky

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 27.7.2005 10:30:01

neznám přesné řešení ale řeší se to pomocí kontroly REFFERERu a vím že se to dá i pomocí mod_rewrite ale neřeknu ti jak...myslím že ale jedenpříklad byl jednou v diskuzích na www.builder.cz a nebo jsem to možná četl kdysi na nějakém blogu...ale nevím :(

Avatar

Autor komentáře: Vojtech Schlesinger

Datum vložení: 29.7.2005 11:07:53

v druhem dilu serialu o MR, ktery vysel prave dnes se muzete docist, jak linkovani z cizich serveru zabranit.

Avatar

Autor komentáře: Lukáš Trunečka

Datum vložení: 26.7.2005 21:24:06

Tož já mám zase problém s tím, že pokud tam vložím [i]%{DOCUMENT_ROOT}[/i] tak mě to vyhodí chybu. Aby to fungovalo, tak musím adresu zadat localhost://... Čímpak to může být?

Avatar

Autor komentáře: oron

Datum vložení: 24.9.2005 21:09:29

mne funguje %{DocumentRoot} asi to je v apache 2.XX zmenene

Avatar

Autor komentáře: ZIMINIX

Datum vložení: 1.9.2005 15:10:47

Chtěl bych se zeptat jestli když mám v .htaccess "RewriteRule ^clanek(.*)\.html$ %{DOCUMENT_ROOT}/index.php?clanek=$1 [L,QSA]" jestli je to dobře. Díky.

Avatar

Autor komentáře: czahoun

Datum vložení: 8.9.2005 13:01:45

Mám placený hosting a tam mi tvrdí, že mám mod_rewrite povolený. Když ale do .htaccess dám cokoli (stačí i jen "RewriteEngine On"), vyhodí to chybu 500 internal server error. Poraďte prosím, kde je asi přibližně chyba? Díky.

Avatar

Autor komentáře: honza

Datum vložení: 9.2.2006 12:03:05

Ja mam uplne stejny problem... nepomuze ani kdyz to pak vypnu "RewriteEngine Off" musim to smazat cele... nevite, prosim, nekdo co s tim?

Avatar

Autor komentáře: PiT

Datum vložení: 28.10.2005 11:06:25

Mam nasledujuci problem: RewriteRule zzz aaa.php?co=zzz Je logicke, ze po zadani server/x/y/zzz ma to presmeruje na server/x/y/aaa.php?co=zzz Problem je ale to, ze v samotnom aaa.php potom pouzivam aj obrazok, ktory ma adresu server/x/y/images/zzz.jpg apache ho samozrejme interpretuje ako server/x/y/images/aaa.php?co=zzz.jpg Neviete poradit, co s tym ? Ak zadam RewriteRule y/zzz y/aaa.php?co=zzz alebo RewriteRule /x/y/zzz /x/y/aaa.php?co=zzz tak mi to pise 404ku :( (pred "server" ma byt samozrejme http:// ale tunajsi skript mi skracuje linky, takze by bola otazka nepochopitelna)

Avatar

Autor komentáře: Bluerabbit

Datum vložení: 16.7.2006 13:57:28

Dobrý den, lidičky potřeboval bych se s Váma poradit.. chtěl jsem si udělat pomocí mod rewrite hezci URL abych tam nemel ty parametry atd.. pouzil jsem to takto: RewriteEngine on RewriteCond %{QUERY_STRING} ^id=([^&]+)$ RewriteRule ^index\.php$ /%1.html [R,L] RewriteRule ^([^/]+)\.html /index.php?id=$1 [L,QSA] funguje to v pohode.. akorat tam je jeste jeden maly hacek.. za tu statickou adresu.. se mi prida to co je v puvodni adrese za otaznikem.. Melo by to jit odstranit pridanim otazniku na treti radku ktera by vypadala takto: RewriteRule ^index\.php$ /%1.html? [R,L] kdyz to takhle udelam tak to nefunguje vubec.. Zkousel jsem taky dat pryc to QSA aby se tam ten retezec nevkladal ale to taky nefunguje... nevite nekdo cim by to mohlo byt a jak by se to dalo vyresit dekuji za rady..

Avatar

Autor komentáře: martin

Datum vložení: 21.7.2007 16:40:01

zkus tohle RewriteEngine on RewriteCond %{QUERY_STRING} ^id=([^&]+)$ RewriteRule ^index\.php$ /%1.html? [R,L] RewriteRule ^([^/]+)\.html /index.php?zacykleni=1&id=$1 [L,QSA] když tam přidáš ? na třetím řádku po html tak se Ti to zacyklí, proto ještě na čtvrtém řádku by jsi měl dát nějaký parametr proti zacyklení třeba "zacykleni=1" zkus to, mělo by to fungovat

Avatar

Autor komentáře: lucas

Datum vložení: 8.10.2006 13:25:17

dobrej clanek no:)

Avatar

Autor komentáře: Tomac1

Datum vložení: 28.11.2006 23:52:28

Nevíte náhodou někdo, jak nastavit mod_rewrite na PHP Home Edition? Již jsem odkomentoval LoadModule rewrite_module modules/mod_rewrite.so, nastavil výchozí adresář na C:/apache a změnil AllowOverride none na All. Po restartu stále nic. Hledal jsem snad všude, ale stále nalézám to samé jednoduché nastavení (viz. postup výše). Problém bude asi někde jinde. Díky

Avatar

Autor komentáře: Milan

Datum vložení: 26.2.2007 17:38:13

Neviete mi niekto poradit, ako mám napísať pravidlo, ktoré z kazdej url adresy odstrani index.php? Napr: www.seznam.cz/adresar/index.php zmeni na www.seznam.cz/adresar/ Nejako mi to v praci nefunguje ako ma.

Avatar

Autor komentáře: Horac

Datum vložení: 14.7.2007 18:18:58

Opravdu děkuji za pomoc. Na mých stránkách už funguje:D chtěl jsem se ještě zeptat - jak dlouho trvá, než vyhledávače zaindexují nové (hezké) URL?

Zpět na článek | Úvodní stránka Interval.cz