Autor Zpráva
Tomáš Čáp
Profil *
Zdravím, potřeboval by jsem radu k mod_rewrite.

1) Rád bych přesměroval index.php?id=5&lang=1 do např. cz/kontakt

Byl by někdo tak ochotný a pomohl mi s tím?

V databázi již mám vytvořený sloupec, kam se ukládá friendly_url z názvu dokumentu, jen to potřebuji nějakým způsobem nechat přesměrovávat i do .htaccess.

Je však nutné, aby fungovaly i ty staré odkazy, kvůli tomu že si $_GET bere idčko a lang



2) Kdyby mi ještě někdo napsal, jak taky místo /kontakt.php předělat odkazy na /kontakt/ byl bych mu velice vděčný!!


Děkuju všem za pomoc
Joker
Profil
Tomáš Čáp
Rád bych přesměroval index.php?id=5&lang=1 do např. cz/kontakt
Tak to půjde dost blbě.
Pokud nemám k dispozici nic jiného než text adresy, jakým způsobem se doberu k tomu, že cz je zrovna 1 a kontakt je zrovna 5?

Šlo by přesměrovat například cz/kontakt třeba na: index.php?id=kontakt&lang=cz.
djlj
Profil
Rád bych přesměroval index.php?id=5&lang=1 do např. cz/kontakt
Ručně vepsat do .htaccess.

Kdyby mi ještě někdo napsal, jak taky místo /kontakt.php předělat odkazy na /kontakt/ byl bych mu velice vděčný!
Prohledej tuto diskusi, řešení tu jsou stovky.
DFly
Profil
no vidis - a takhle podobne by to mohlo vypadat v datech pro rewrite v .htaccess
index.php?id=5&lang=1 cz/kontakt

staci kdyz si budes tento soubor generovat v tomto duchu napr. pri zalozeni nove stranky, abys to nemusel delat rucne
a kontroluj pro jistotu unikatnost friendly_url

"stare" odkazy ti samozrejme budou fungovat stale a pokud pouzijes parametr QSA tak muzes klidne k friendly_url pridavat i dalsi GETy a bude to vypadat takto

cz/kontakt?test=ABC
index.php?id=5&lang=1&test=ABC
DFly
Profil
ad2) predelat /kontakt.php na /kontakt/ nemam moc v oblibe, museji se vsechny odkazy na webu udelat s / na zacatku cesty
to uz radeji nechavam (vestlinou vzdy obe) /kontakt nebo /kontakt.html
Joker
Profil
djlj, DFly
Pravda, to je asi jediná možnost, jak dosáhnout, co Tomáš Čáp chce, ale já bych raději zkusil upravit zadání, než mít v .htaccess něco takovéhoto:
RewriteRule ^cz/hlavni$ %{DOCUMENT_ROOT}/index.php?lang=1&id=1 [L,QSA]
RewriteRule ^en/main$ %{DOCUMENT_ROOT}/index.php?lang=2&id=1 [L,QSA]
RewriteRule ^de/hauptsite$ %{DOCUMENT_ROOT}/index.php?lang=3&id=1 [L,QSA]
RewriteRule ^cz/druha$ %{DOCUMENT_ROOT}/index.php?lang=1&id=2 [L,QSA]
RewriteRule ^en/second$ %{DOCUMENT_ROOT}/index.php?lang=2&id=2 [L,QSA]
RewriteRule ^de/zweite$ %{DOCUMENT_ROOT}/index.php?lang=3&id=2 [L,QSA]
RewriteRule ^cz/treti$ %{DOCUMENT_ROOT}/index.php?lang=1&id=3 [L,QSA]
(...)

...přijde mi to ujeté, pokud něco jen minimálně odlišného jde udělat jedním řádkem.

staci kdyz si budes tento soubor generovat
Taky jsem nad něčím takovým u jednoho webu přemýšlel, ale nakonec jsem si to rozmyslel.
Nelíbí se mi na tom, že pokud by přegenerování z nějakého důvodu selhalo, přestane celý web fungovat. A taky je daleko závažnější otázka bezpečnosti- stačí aby skript neodchytil nějakou chybu (či úmyslný hack) a může to mít fatální následky.
DFly
Profil
Joker
samozrejme - zalezi na typu webu
RewriteRule ^([cz|en|de])/([a-z0-9])$ %{DOCUMENT_ROOT}/index.php?lang=$1&page=$2 [L,QSA]
se da ve vestsine webu pouzit (s kontrolou zda ta stranka existuje)

napriklad tam kde neni nutno tajit ruzna ID neni probem kombinovat: tiskova_zprava_120, denni_report_2007_11_29
regulary toho snesou hodne :-)

ale tento styl vyuzivam pri vicejazycnych webech takto:
RewriteRule ^druha$ %{DOCUMENT_ROOT}/index.php?lang=1&id=2 [L,QSA]
RewriteRule ^second$ %{DOCUMENT_ROOT}/index.php?lang=2&id=2 [L,QSA]
RewriteRule ^zweite$ %{DOCUMENT_ROOT}/index.php?lang=3&id=2 [L,QSA]

jazyk webu se vezme primo z friendly url pokud je nastaveno, v pripade
RewriteRule ^home$ %{DOCUMENT_ROOT}/index.php?id=1 [L,QSA]
pak beru $lang z cookie nebo default

a pokud se nenadefnuje $id, tak to jde na home
a pokud e $id neexistjici tak 404

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0