PDA

Pogčedajte punu verziju : Rewrite URL za folder [.htaccess]


brankko
10. 10. 2009., 02:42
Imam jedan problemcic za koji nikako ne mogu da sklepam resenje koje u potpunosti radi ono sto ja hocu.

Problem je sledeci:
imam sajt.com i u njemu folder /html u kome su datoteke sajta (document root je na / )
zelim da kada ukucam sajt.com dobijem sajt.com/html i sajt.com/nesto dobijem sajt.com/html/nesto, ali da mi to ne prikazuje u URL-u (dakle zelim da se i dalje vidi samo sajt.com i sajt.com/nesto)

Za sada sam sredio da mi za sajt.com povuce sadrzaj iz /html ali mi na sve linkove dodaje /html/ i ne rade mi linkovi ako izostavim ono /html/ a hocu da se to /html/ uopste ne vidi, kao da i ne postoji.

Pored toga, imam neke foldere u root-u kojima zelim da pristupam bez ikakve promene url-a, pa sam njih izlistao sa:
RewriteRule ^forum/.*$ - [PT]
RewriteRule ^download/.*$ - [PT]
itd... (naravno pre ovih pravila za rewrite)

Dakle, zelim da mi sve (sem ovih foldera koje sam prethodno definisao) sto stize kao sajt.com/bilosta zapravo prosledjuje na sajt.com/html/bilosta ali da mi sve i dalje prikazuje samo kao sajt.com/bilosta

Treca opciona stvar je ona fora sa trazenjem fajla na dve adrese pre izbacivanja greske 404.
Tipa prvo da potrazi u ovom /html pa ako ne nadje, da pogleda u /arhiva pa ako nema ni tu da redirektuje na 404 error stranu. Ali ovo ne bi trebalo da je problem (nisam jos stigao dotle :) )

Any idea?

mileusna
10. 10. 2009., 13:42
Ovako nešto možda?!

RewriteCond %{REQUEST_URI} ^/(?!html).*
RewriteRule ^(.*) /html/$1 [L,NE]

ivanhoe
10. 10. 2009., 14:45
ne znam otkud ti ovo [PT] ti flagovi su potpuno nepotrebni za ovu primenu, a i T bi trebalo da se pise kao T=<mime/tip>, a ne samo T

ja bih to sve zajedno pisao ovako:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/?html/
RewriteRule ^(.*)$ /html/$1 [L]


ako fajl ne postoji, i ako nije u html folderu, onda ga rewrite-uj tamo. Time si resio problem fajlova koji postoje u root-u, a ne moras da svaki put menjas .htaccess kad nesto menjas na serveru

brankko
10. 10. 2009., 14:46
Probao i nece :(

Elem, bilo mi je ovako
RewriteCond %{HTTP_HOST} ^domen\.org$
RewriteCond %{REQUEST_URI} !^/html/
RewriteRule (.*) /html/$1
I radi mi samo za home-page... Tj. tu povuce ostatak iz foldera, ali svugde drugde i dalje dodaje ime foldera...

Mozda je ovako lakse da objasnim poentu ovoga:
Imam sajt koji s'vremena na vreme dobija potpuno novi sadrzaj (fizicki) i onda, da ne bih stalno selio fajlove i migrirao bazu, jednostavno razlicite verzije spakujem u razlicite foldere.
sajt.com/v1
sajt.com/v2
sajt.com/v3
I onda hocu iz htaccess-a da samo po potrebi ukljucim jedan kao glavni, vezan za root domena.

nn.nn
10. 10. 2009., 17:50
ne znam otkud ti ovo [PT] ti flagovi su potpuno nepotrebni za ovu primenu, a i T bi trebalo da se pise kao T=<mime/tip>, a ne samo T


Rekao bih da je on koristio 'passthrough|PT' flag, a ne 'type|T=MIME-type'. Svejedno, i ja mislim da mu tu nije mesto.


ja bih to sve zajedno pisao ovako:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/?html/
RewriteRule ^(.*)$ /html/$1 [L]



Ovo gore radi, provereno. A na isti način kao za /html, možeš da rešiš i za /forum, odnosno /download.


RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/forum
RewriteCond %{REQUEST_URI} !^/download
RewriteCond %{REQUEST_URI} !^/html
RewriteRule ^(.*)$ /html/$1 [L]

ivanhoe
10. 10. 2009., 20:26
aaa, vidis na PT sam skroz zaboravio :) ... ali opet pass through ne radi to sto je on hteo

brankko
11. 10. 2009., 02:39
@nn.nn

Iz nekog cudnog razloga i dalje se potpuno isto ponasa... Nemoguce da je hosting u pitanju... probacu na nekom drugom serveru...

brankko
11. 10. 2009., 03:13
btw, naleteh na ovo ako nekome zatreba Rewrite Root Directory to Subdirectory (http://www.drichproductions.com/random-knowledge/rewrite-root-directory-subdirectory.php)

Elem, moj problem je uspesno resen, a krivac svemu bila je Joomla CMS (http://www.joomlashack.com/community/index.php?PHPSESSID=t2tercdg7k30kenvdj3tu4op41&topic=12511.msg44366#msg44366):