Autor Zpráva
LukasHula
Profil
Ahoj přátelé,
docela delší dobu si lámu hlavu s tím, jak udělat friendly URL bez identifikatoru čili nechci tam číslo, ale jen název.
Něco jsem prostudoval i zde, něco tak různě, ale nic pro mě, zatím, nebylo dostatečně uspokojivé.

Má potřeba je ta, že v tuto chvíli mám adresu detailu produktu př: example.com/1-k-www-1-p-www-prezentace, ale to je strasny. Chtel bych, aby to bylo example.com/www/www-prezentace. U kategorii je to obdobne, tam mam example.com/1-kategorie-www a potřebuji example.com/www. Sledoval jsem napriklad i jak to ma resene wordpress, ale dostal jsem se vzdy tam, kde skoncim sam, a sice, ze si vytahnu potrebny alias z db, ale nevim, nejde mi do hlavy to, kdyz do url zadam example.com/www, podle ceho to pozna? kam mam to id dat, abych ho mohl prepsat?

nejak me toto trapi a potreboval bych skutecne poradit jak na strane htaccess, tak na strane php.

Moc dekuji za Vase zkušenosti!!!
Radek9
Profil
Univerzální obecné pravidlo. A potom rozparsovat v PHP.
LukasHula
Profil
Radek9:
děkuju, toto tam v podstatě v htaccess mám... v podstate jestli spravnu dobre to php, tak ja budu jako parametr misto id predavat jmeno cili neco ve smyslu: example.com/page=category&cat=www (predtim jsem mel example.com/page=category&cat=1) a potom dam dotaz do db, abych ziskal z nazvu id?

Nebo se mylim?
maks
Profil
LukasHula:
ne, example.com/?page=www/www-prezentace, v GET['page'] pak bude ten string, na který použiješ explode.

$explode[0] - kategorie
$explode[1] - produkt
LukasHula
Profil
maks:
takhle, parametr $page, mam jako indícii k tomu, jestli jde o produkt, stránku, kategorii, novinku,...
ale ok, to je srozumitelne...
ale kdyz mam tedy 2 parametry (nazev kategorie, nazev produktu), jak poznam, co se ma vykonat? myslim tim v htaccess, jak mu dam najevo, ze jednou je to jen vypis kategorie a jednou detail produktu?
Radek9
Profil
LukasHula:
O tohle se ti vůbec nestará .htaccess. To si musíš ošetřit v PHP. Pokud /nazev-kategorie znamená zobrazení článků z kategorie a /nazev-kategorie/nazev-clanku znamená zobrazení daného článku, tak jen ověřuje jestli je prvek na indexu 1 prázdný.
LukasHula
Profil
Radek9:
aha... diky... furt se mi to mota.
A kdyz mam tedy adresu kategorie/produkt, tak mi to nejde, ale samotna kategorie ano

toto mam v htaccess
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=category&cat=$1 [QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=detail&cat=$1&det=$2 [QSA]

neni to tim lomitkem, ze mi to zablbne? kategorie/produkt????
Kajman
Profil
LukasHula:
cat=$1&det=$2
Co očekáváte v $2 (obsah druhé závorky), když máte v pravidle vlevo jen jedinou závorku? Navíc je vhodné dávat konkrétnější pravidla na začátek, obecnější na konec. A RewriteCond se vzhaují jen k následnému RewriteRule.
LukasHula
Profil
Kajman:
jj, uz jsem tam pridal zavorku navic, vsiml jsem si, jak jsem to sem vlozil, diky za postreh čili ted to mam takto
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*)$ index.php?page=detail&cat=$1&det=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=category&cat=$1 [QSA]

ale stale neco blbne... hazi me to do rootu
Kajman
Profil
LukasHula:
hazi me to do rootu

To nebude zmíněnými pravidly.
LukasHula
Profil
Kajman:
nemuze to byt tim /produkt??? jako ze lomitko to bere jako presunuti a ne jen podstrceni?


Zkousim stale a porad se mi nezobrazuje detail produktu. Kategorie je spravna, ale detail nikoli. To mi ukaze nenastylovanou stranku, jako kdyby to skutecne chtelo jit do nejakeho adresare. Ja myslel za ta podminka rewriteCond to ma zamezit nebo je tedy problem v necem jinem?

Diky
Davex
Profil
LukasHula:
To mi ukaze nenastylovanou stranku, jako kdyby to skutecne chtelo jit do nejakeho adresare.
Ano, lomítko považuje každý normální prohlížeč za adresář a při vyhodnocování relativních cest ho používá. Na server se dostane až výsledná absolutní cesta, takže to na serveru ovlivnit nejde. Používej kořenové adresy.
LukasHula
Profil
Davex:
diky, ale ani toto mi nepomohlo... uz jsem z toho ponekud zoufaly, protoze nevim, jak to posunout o ten finalni kousek...

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: