Autor | Zpráva | ||
---|---|---|---|
david_host Profil * |
#1 · Zasláno: 16. 6. 2011, 10:50:52
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 |
#2 · Zasláno: 16. 6. 2011, 11:17:41
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] index.php echo 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; //vypíše URL. Ta se dá rozparsovat |
||
david_host Profil * |
#3 · Zasláno: 16. 6. 2011, 16:36:20
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 * |
#4 · Zasláno: 18. 6. 2011, 13:55:45
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 |
#5 · Zasláno: 20. 6. 2011, 23:13:26
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š. |
||
Časová prodleva: 13 let
|
0