Autor | Zpráva | ||
---|---|---|---|
Nailen Profil |
#1 · Zasláno: 26. 2. 2012, 02:19:03
Ahoj,
snažím se přijít na to, jak fungují přátelská URL. Všude se řeší mod_rewrite, .htaccess, funkce pro převod URL,... Nějak si to ale nemohu poskládat do souvislostí. Fungují přátelská URL nějak automaticky, nebo je potřeba něco ukládat do databáze a následně načítat? Vymyslel jsem si tento jednoduchý příklad. Budu rád pokud mě někdo stručně vysvětlí co je potřeba udělat aby šlo tyto funkce realizovat. Budu mít třeba portál s obcemi www.obce.cz "nevlastním tuto doménu :-) jen ji použiji pro tento případ. Rovněž následující url na tomto portálu nehledejte!" Dejme tomu, že budu chtít vidět obce začínající na písmeno "D". Kliknu na "D" a dostunu tuto URL: www.obce.cz/index.php?letter=d&page=1 přátelské URL bych si představoval třeba takto: www.obce.cz/obec-d Zde bych si vybral obec Domažlice. Dostanu tuto URL: www.obce.cz/obec.php?id=1 přátelské URL bych si představoval třeba takto: www.obce.cz/domazlice Zde bych si vybral ulici Horní. Dostanu tuto URL: www.obce.cz/obec.php?id=1&id2=5 přátelské URL bych si představoval třeba takto: www.obce.cz/domazlice/horni Stačí mi stručný postup jak mám postupovat. Děkuji všem za rady. Nailen |
||
Alphard Profil |
#2 · Zasláno: 26. 2. 2012, 02:31:22
Mod_rewrite (většinou zapsaný v .htaccess) umožní zpracování přátelské url indexem, který je umístěn někde v rootu (jinak by se hledal adresář domazlice).
PHP pak v parametrech dostane to, co je v url, zpracovat a odpovědět může různě, záleží na vás. Reguláry, explode(), ... fantazii se meze nekladou. Protože je předchozí postup jednosměrný, odkazy musíte vypsat již v té podobě, v jaké je chcete. Automaticky to umí řeší některé frameworky, např. Nette. Použití databáze je na vás, v popsaném případě bych k obcím dal sloupec s url-friendly názvem (domazlice) a asi i počáteční písmeno (d). Podobně k ulicím. |
||
Taps Profil |
#3 · Zasláno: 26. 2. 2012, 06:50:52
|
||
Nailen Profil |
#4 · Zasláno: 26. 2. 2012, 19:41:16
Asi se v tom nějak ztrácím.
Pochopil jsem dobře, že pokud chci mít takovéto URL: www.obce.cz/domazlice tak v databázi u obce Domažlice musím mít toto URL uložené a na základě mod_rewrite si z databáze načtu data, tak jako bych zadal www.obce.cz/obec.php?id=1 ? Co ale když budu mít x stránek obcí začínajících na písmeno "D" a budu chtít pouze přecházet mezi stránkami. Př: www.obce.cz/index.php?letter=d&page=1 www.obce.cz/index.php?letter=d&page=2 www.obce.cz/index.php?letter=d&page=3 www.obce.cz/index.php?letter=d&page=4 ... Tyto URL jdou také převést na něco smysluplnějšího? |
||
Alphard Profil |
#5 · Zasláno: 26. 2. 2012, 19:52:54
Nailen:
„Tyto URL jdou také převést na něco smysluplnějšího?“ Třeba obce.cz/obec-d/1 |
||
Nailen Profil |
#6 · Zasláno: 27. 2. 2012, 08:31:14
Alphard:
mohl bych vás poprosit o stručný bodový postup co převod těchto dynamických linků obnáší? Předpokládám, že tyto linky nebudu ukládat do databáze, protože mohou obsahovat i vyhledávanou frázi,... Př: index.php?search=pra&page=2 chtěl bych třeba: obec.cz/hledej-pra/2 Uvědomuji si, že moje dotazy jsou pro vás triviální. Bohužel se do toho snažím proniknout a nějak se mi nedaří to přesně pochopit jak to funguje. Přečetl jsem toho už hodně o této problematice, ale většinou se píše o mod_rewrite, o funkcích na generování názvů URL, ale nikde není pořádně postup jak to vzájemně logicky propojit. Děkuji |
||
Alphard Profil |
#7 · Zasláno: 27. 2. 2012, 19:04:40
Do .htaccess
# enable cool URL <IfModule mod_rewrite.c> RewriteEngine On # RewriteBase / # front controller RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L] </IfModule> Na index si dejte nějaké $_SERVER['REQUEST_URI']; a prohlížejte, jak se přenáší proměnné z url.
|
||
Nailen Profil |
#8 · Zasláno: 28. 2. 2012, 01:42:49
Alphard:
Dobrý večer, moc Vám děkuji za Vaši snahu. Jsem bohužel amatér a asi se mi nepodařilo vysvětlit co přesně potřebuji. Snažím se pochopit princip převodu na přátelská URL a zase zpět. Pokusím se tedy ještě jednou. Mám zdroják s tímto odkazem. <?php ... print("<a href=index.php?search=pra&page=2&sort=1 class=altlink_white>Obec</a>"); ... ?> Aktuálně když kliknu na odkaz "Obec" tak v prohlížeči dostanu adresu http://muj-server.cz/index.php?search=pra&page=2&sort=1 a stránce index.php předám tyto parametry v adrese. Takže zatím klasika. Chtěl bych ale aby v prohlížeči byla adresa http://muj-server.cz/hledej-pra/2/1 Pokud bych tuto adresu napsal přímo do kódu, tak jak skript pozná, které parametry a kterému souboru chci předat? <?php ... print("<a href=hledej-pra/2/1 class=altlink_white>Obec</a>"); ... ?> Děkuji za trpělivost. |
||
Časová prodleva: 12 let
|
0