Autor Zpráva
Nailen
Profil
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
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
Nailen:
Doporučuji pročíst
http://mike.treba.cz/mod_rewrite-a-hezke-url/
Nailen
Profil
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
Nailen:
Tyto URL jdou také převést na něco smysluplnějšího?
Třeba
obce.cz/obec-d/1
Nailen
Profil
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
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
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.

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: