Autor Zpráva
david_host
Profil *
Ahoj, mám url této struktury
web.cz/kategorie
web.cz/kategorie/clanek

a nyní chci pridat jazykovou mutaci
web.cz/sk/kategorie
web.cz/sk/kategorie/clanek

.htaccess mám v této podobě:
RewriteEngine On
RewriteBase /


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


RewriteCond %{REQUEST_URI} !^/sk/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?$ ?stranka=$1&clanek=$2




#sk


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^sk/([^/]+)/([^/]+)/?$   ?jazyk=sk&stranka=$2

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^sk/([^/]+)/([^/]+)?/?$ ?jazyk=sk&stranka=$1&clanek=$2 


Jakou logikou se ubírám je asi jasné - pokud začíná url jazykovou mutaci tak mu přihodím ještě proměnou jazyk. Bohužel takto musím pro každý jazyk přidávat asi 5 řádků což je nepohodlné. Pokud znáte nějaké lepší řešení tak ho moc uvítám. Podle mě by toto mělo fungova,t ale bohužel nefunguje - je to o jednu proměnou posunuté :(..
Jozin
Profil
Zdravím,

já to řeším (a hodně fw taky) routováním. Základ je, že se všechny adresy přesměrují na index.php a v indexu se prostě vezme adresa a tu si rozparsuješ a uživateli ukážeš co chce ;).

ukázka:
.htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
//brano z nette
index.php
echo 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; //vypíše URL. Ta se dá rozparsovat
david_host
Profil *
díky za tip pokud to chápu dobře tak vše mimo pdf,js,ico atd se presmeruje na index. zajímavé, dekuji za tip :). zkusim to.
david_host
Profil *
jestli ještě můžu poprosit. v php potom url zpracovávám takto:


$url_pole = explode("/", $_SERVER['REQUEST_URI']);
foreach ($url_pole as $key => $hodnota){ if (empty($hodnota)){ unset($url_pole[$key]);}};
$url_pole =  array_values($url_pole);


Je tu nějaký zádrhel který by se mi mohl vymstít a já ho nevidím ? Děkuji moc
Jozin
Profil
No máš tam jednu poměrně hnusnou věc se kterou to nepočítá. A to je ta, že v REQUEST_URI je i $_GET tvé rozložení pomocí explode spojí třeba toto index.php?promena=hodnota což asi není nejlepší řešení. Jestli vidíš, v #2 ti píšu i to echo, které vypíše celou url. Ta jde funkcí rozložit zkus si dát:
<?php

var_dump(parse_url('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);

samozřejmě musíš ještě zjišťovat, jestli má být http nebo https, ale to už je jednoduché doimplementace. Takto ti to rozseká a budeš mít všechny informace, které potřebuješ.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0