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
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 *
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
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0