Autor Zpráva
HGD
Profil
Zdravím přátelé, řeším takovej problém. chci udělat hezký URL, s jedním parametrem je t OK, ale nevim jak na 2 parametry. Hlavní problém je asi v tom, že nechci aby odkaz měl strukturu: stránka.php?odkaz=tentam&zdroj=soused ale chci strukturu domena.cz/tentam/soused a přitom mam soubory tentam a soused, při 2 úrovni by byl TENTAM jen jako text ale na soubor by byl pouze odkaz.
Nevím zda jsem nevymyslel uplnou kravinu, tak díky za každou konstruktivní připomínku
blahapet
Profil
Já jsem donedávna ještě neuměl nic udělat co se týče hezkých URL s jením parametrem - dnes bych si již troufl i na deset parametrů.

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)$ ?odkaz=$1&zdroj=$2

Pro vysvětlenou: To co je za RewriteRule v závorkách jsou proměnné (reg. výrazy). Ty pak dosazuješ v druhé části RewriteRule za mezerou $1 a $2. Pokud bych z jakéhokoli důvodu nechtěl použít regulární výrazy dosazovaných proměnných a byl bych si jist, že takovýto typ odkazu bude na Tvých stránkách unikátní, šlo by to zapsat i takto:

RewriteRule ^tentam/soused$ ?odkaz=tentam&zdroj=soused

Pokud tomu všemu porozumíš, záhy zjistíš že do adresního řádku můžeš v podstatě napsat cokoli, aby se ti dostala požadovaná stránka "stránka.php?odkaz=tentam&zdroj=soused"

Hodně štěstí!
HGD
Profil
díky moc :) ještě dotaz, když mam některý stránky jen s jedním parametrem a některý se 2 parametry?

Ještě jedna věc, mam pár (asi tak 6 stránek) který jsou s jedním parametrem, ale když je otevřu, tak bych chtěl mít v adresním řádku odkaz: www.doma.cz/stránka/podstránka01 (až 06)
jde tole taky nějak vymyslet nebo už na to musim jinou strukturu nebo tak něco??
blahapet
Profil
Pokud to takto dělám já - asi to dělám moc složitě - a mnozí na to jistě budou mítí svůj názor, ale třídím si tyto situace a pro každou z nich dělám jiné pravidlo, tzn:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ ?promenna1=$1

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)$ ?promenna1=$1&promenna2=$2

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)$/([^/]+) ?promenna1=$1&promenna2=$2&promenna3=$3

... a takhle by to mohlo jíti do nekonečna.

Někdy se mi stává případ u různých svých stránek, co momentálně předělávám, 10 let starý dynamický odkazy na statický, že první načítaná proměnná je vkládaný (include) soubor uložený v adresářích i podadresářích a další parametr je třebas jen stránkování (např. v knize návštěv), pak to řeším takto:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^guestbook/strana-([^/]+)\.html$ ?page=./files/guestbook&g=$1

To znamená že pokud v adres. řádku bude:
http://www.nejakastranka.cz/guestbook/strana-3.html

Dostane se Ti stejného výsledku, jakoby jsi zadal:
http://www.nejakastranka.cz/index.php?page=./files/guestbook&g=3

Tak právě jakoby ta "trojka" je jediné, co dosazuji. A ten "guestbook" je includovaný soubor uložený ve složce "files"

Snad si z toho mého systému vyvodíš svůj. Jde o to, jen to POCHOPIT, jak to vše šlape... Jak říkám, možná to dělám třeba špatně, ale funguje mi to na mnoha eshopech a stránkách, např:

http://eshop.svetlokamenu.cz
http://www.bkb-hk.cz
http://uplet.xf.cz
blahapet
Profil
Omlouvám se, koukám, že tam mám chybu u toho případu, kde jsou tři proměnné, správně má být:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ ?promenna1=$1&promenna2=$2&promenna3=$3
HGD
Profil
díky moc, trochu jsem musel upravit srukturu stránek ale jinak vše funguje

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0