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: 14 let
|
0