Autor Zpráva
Tomashekk
Profil
Pročetl jsem si spousty vláken a dokonce i článků, ale tuto problematiku jsem nepobral.
Jde mi o to, jak udělat pěkné url například z této index.php?page=modules/user/clanek
a nebo z této http://mops.cz/index.php?page=clanky&topic=info_o_plemeni&story=68 (u této, to už vůbec nechápu)
Marek88
Profil
Tomashekk:
Běžný způsob je řekněme opačný. Všude v html píšeš ty hezké odkazy (např.: http://mops.cz/clanky/info_o_plemeni/68) a na serveru z nich uděláš pro vnitřní potřeby (uživatel to nevidí) ty "ošklivé" pomocí mod rewrite.
Tomashekk
Profil
Marek88:
a jak by teda bylo to pravidlo pro mod_rewrite? v tomto případě?
Tomashekk
Profil
Tomashekk:
bylo by to něco v tom stylu jako
RewriteRule  ^mops.cz/(.*)/(.*)/(.*) index.php?page=$1&topic=$2&story=$3

je to tak?

Zasláno: 16.1.2011 12:05:28

jde mi o to, zda toto je správně :(

a to samé jak by šlo udělat u tohoto?
mops.cz/?page=modules/forum/index&posts=401&forum=1
nebo jak jinak to udělat?

Moderátor Davex: Přidán text ze zakládajícího příspěvku duplicitního vlákna. Přesunuty příspěvky [#5] až [#10].
Davex
Profil
Tomashekk:
Toto pravidlo správně není. Regulárním výrazem je vyhodnocována pouze cesta bez doménového jména, takže to je tam navíc. Také by se mělo vyloučit lomítko mezi lomítky a požadovat mezi nimi alespoň jeden znak.
RewriteRule  ^([^/]+)/([^/]+)/(.*) index.php?page=$1&topic=$2&story=$3

Možná by ještě bylo dobré zauvažovat nad pořadím parametrů v cestě. Nevím, jaký mají ty parametry přesný význam, ale v cestě bych je řadil od obecných po konkrétní (asi /topic/story/page).
Tomashekk
Profil
Davex:
jenže jak to logicky uděla u tohoto? mops.cz/?page=modules/forum/index&posts=401&forum=1

nějak to nechápu :(
Davex
Profil
Tomashekk:
Jak? Asi bych si pro diskusi vyhradil nějaké klíčové slovo, třeba diskuse a před stávající pravidlo přidal další, které bude URL se slovem diskuse přepisovat na skript s požadovanými parametry.
RewriteRule  ^diskuse/([^/]+)/(.*) index.php?page=modules/forum/index&posts=$1&forum=$2

Opět neznám pravý význam parametrů a jaké by bylo vhodné pořadí v přepsané cestě.
Tomashekk
Profil
Davex:
Odkaz na tomhle odkazu se můžete podívat.. význam je ten, že posts je ID daného vlákna a forum je ID daného tématu
Davex
Profil
Tomashekk:
Proč by mělo být v URL ID tématu, když stačí jen ID vlákna? Nebo vlákno neví, do kterého tématu patří?
Tomashekk
Profil
Davex:
to máte pravdu, takže jak u článků, tak i u fora stačí dávat &ID=xxx
ale v podstatě ten odkaz je dělanej jako je tady na foru..
takže by to mohlo být nějak takto?
RewriteRule  ^diskuse.html/(.*) index.php?page=modules/forum/index&posts=$1
RewriteRule  ^clanek.html/(.*) index.php?page=clanky&story=$1


nepletu se?
Tomashekk
Profil
RewriteRule  ^diskuse.html/(.*) index.php?page=modules/forum/index&posts=$1
RewriteRule  ^clanek.html/(.*) index.php?page=clanky&story=$1
RewriteRule  ^odkazy.html/(.*) index.php?page=links&id=$1
RewriteRule  ^stahuj.html/(.*) index.php?page=downloads&id=$1
RewriteRule  ^inzerce.html/(.*) index.php?page=adver&id=$1
RewriteRule  ^diskuse.html index.php?page=modules/forum/index
RewriteRule  ^clanek.html index.php?page=clanky
RewriteRule  ^odkazy.html index.php?page=links
RewriteRule  ^stahuj.html index.php?page=downloads
RewriteRule  ^inzerce.html index.php?page=adver


Něco jsem sesmolil, ale nevím zda je to správně, prosím okomentujte mi to. Ptám se jen proto, že to nemám kde zkoušet :(
Davex
Profil
Tomashekk:
Na každém řádku bych ještě použil příznak [L]. Tečky v prvním parametru by se měly escapovat jako \. a v posledních pěti pravidlech by bylo dobré určit konec řetezce.
…
RewriteRule  ^diskuse\.html$ index.php?page=modules/forum/index [L]

Ptám se jen proto, že to nemám kde zkoušet :(
To je pro vývojáře dost velká překážka. Pro vývoj ve Windows je dobré používat nějaký vhodný balík jako XAMPP, EasyPHP nebo WampServer.
Tomashekk
Profil
Davex:
co znamená ten příznak L?
Děkuji za pomoc...
jde o to, že nyní nemám funkční PC a jsem nucen pracovat na notebooku a na tom se neda skoro nic delat (stupidni Visty)
Petr__
Profil *
Tomashekk:
co znamená ten příznak L?

Hned v první odpovědi [#2] Marek88 máte odkaz na http://www.jakpsatweb.cz/server/mod-rewrite.html , kde je to vysvětleno...
Tomashekk
Profil
Petr_:
Děkuji, už jen tedy rozchodit to easyPHP viz Odkaz

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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