| Autor | Zpráva | ||
|---|---|---|---|
| Peter123 Profil * |
Dobrý deň,
chcem si vytvoriť tzv. doménový koš a k tomu pekné url. Moja myšlienka je taká, že pomocou mod_rewrite budem parsovať url podľa domén 3. rádu, a pre každú doménu vytvorím špecifické pravidlo na peknú url. Príklady: ---------- http://clanky.domena.loc/sk - pomocou .htaccess sa podstrčí sk/clanky - možno by stačilo i sk/clanky/detail http://clanky.domena.loc/sk/pekna-url-123456 - pomocou .htaccess sa podstrčí sk/clanky/detail/pekna-url-123456 - ideal: sk/clanky/detail/123456 http://clanky.domena.loc/en/cool-url-123456 - pomocou .htaccess sa podstrčí en/clanky/detail/cool-url-123456 - ideal: en/clanky/detail/123456 Problém 1. Ako dynamicky zisťovať jazyk, čiže prvý parameter v url? Problém 2. Mám tento kód, ktorý funguje len pre "sk" parameter v url a navyše mi mení "base directory" na "/clanky", čo má za následok, že ak v zdrojovom kóde zobrazujem obrázok <img src="/cesta/k/obrazku.jpg" alt="" /> tak ten nenájde, pretože obrázok hľadá na <img src="/clanky/cesta/k/obrazku.jpg" alt="" /> # Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
RewriteCond %{HTTP_HOST} ^clanky.domena.loc/sk
RewriteRule (.*) /sk/clanky
RewriteCond %{REQUEST_URI} !sk/clanky
RewriteRule ^(.*)$ sk/clanky/detailĎakujem za každú pomoc! Moderátor Davex: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na
). |
||
| Davex Profil |
#2 · Zasláno: 17. 9. 2010, 20:35:01
První podmínka RewriteCond nebude nikdy splněna, takže bych jí spolu s navazujícím pravidlem odstranil.
ad 1) Jazyk lze odlišit vhodným regulárním výrazem, pomocí které se kód jazyka izoluje a využije k podstrčení: RewriteRule ^([a-z]{2})/(.*)$ $1/clanky/detail/$2 [L]ad 2) Pravidlo z bodu 1) by mělo řešit i tento problém, protože regulárnímu výrazu vyhoví pouze cesta, která má na začátku dvě písmena a lomítko. Po učesání a přídání podmínky proti zacyklení by to celé mělo vypadat takto: # Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^([a-z]{2})/(.*)$ $1/clanky/detail/$2 [L] |
||
| Peter123 Profil * |
#3 · Zasláno: 17. 9. 2010, 23:50:04
Davex:
No to dáva zmysel, ale ešte by som tam potreboval zahrnúť kontrolu domén 3. rádu: http://clanky.domena.loc/sk sa podstrčí RewriteRule ^([a-z]{2})/(.*)$ $1/clanky/detail/$2 [L] http://kategorie.domena.loc/sk sa podstrčí RewriteRule ^([a-z]{2})/(.*)$ $1/category/detail/$2 [L] Idemi o to, aby tam vzniklo niečo ako "switch" v php, ktorý podľa domény 3. rádu použije rôzny RewriteRule... |
||
| Davex Profil |
#4 · Zasláno: 18. 9. 2010, 00:13:40 · Upravil/a: Davex
Nechápu sice moc dobře, jakou logiku má rozlišení článku nebo kategorie podle subdomény a moc se mi to nelíbí, ale mohla by se přidat další podmínka:
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{HTTP_HOST} ^(.+)\.domena\.loc$
RewriteRule ^([a-z]{2})/(.*)$ $1/%1/detail/$2 [L]Pokud se má místo kategorie podstrkávat category, tak by bylo asi lepší, přesunout rozlišení typu obsahu přímo do aplikace. |
||
|
Časová prodleva: 15 let
|
|||
0
).