Teme: URL rewriting

Napredni URL rewriting: zaobilaženje pravila u .htaccess datoteci i password protection nezavisnih direktorijuma

Skraćena veza: http://pedja.supurovic.net/veza/2282

Za svaki savremeni sajt neophodan uslov je da adrese do dokumenata budu optimizovane za internet pretraživače. O tome kako se preusmeravaju optimizovane putanje na stvarni sadržaj pisao sam u članku Redirekcija domena sa .htaccess ali i bez njega.

Ponekad se desi da na sajtu koji već ima podešeno preusmeravanje optimizovanih putanja postoji potreba da se u poddirektorijum smesti sadržaj koji je nezavisan.

Ako imate uključenu običnu redirekciju i postavite nezavisan poddirektorijum, sadržaj tog direktorijuma nećete moći da prikažete, jer svaki upit ka sajtu prolazi kroz mehanizam redirekcije i biva usmeren na osnovni veb sajt.

Da biste to onemogućili na samom početku pravila za redirekciju (odmah ispod linije Rewrite Engine on dodajte:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Ove dve komande objašnjavaju veb serveru da prvo proveri da li postoji datoteka (prva linija) ili direktorijum (druga linija) na navedenoj putanji. Ako postoji, on će prikazati taj sadržaj i neće pokretati mehanizam preusmeravanja.

Ovo će osigurati da vaš nezavisni direktorijum i njegov sadržaj budu viljivi direktno.

Ipak, ako u taj direktorijum stavite zaštitu pristupa lozinkom podešavanjem .htaccess datoteke i dodatnom datotekom sa lozinkama, to neće raditi.

Veb server će pokušaj pristupa sadržaju koji je zaštićen lozinkom protumačiti kao pristup nepostojećem sadržaju pa će ponovo biti aktiviran mehanizam preusmeravanja. Veb server neće tražiti lozinku nego će adresu preusmeriti na osnovni sajt, koji pošto ta adresa nije ispravna prikazati da traženi dokument ne postoji.

Da se to ne bi događalo, potrebno je da u .htaccess datoteci u kojoj je podešeno preusmeravanje naglasite šta da se radi sa sadržajima za koje se traži lozinka, i to takođe pre komandi za preusmeravanje. Dakle, odmah ispod komande Rewrite Engine on dodajte:

ErrorDocument 401 default

To će obezbediti da veb server za dokumente za koje je podešen pristup lozinkom, zaista zatraži lozinku

Konačan izgled .htaccess datoteke može da izgleda ovako:

RewriteEngine on
ErrorDocument 401 default

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php [L,QSA]
RewriteCond %{HTTP_HOST} !^(www)(.*)$
RewriteRule ^/?(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Ovako podešena .htaccess datoteka neće ometati pristup sadržajima zaštićenim lozinkom i nezavisnim direktorijumima i dokumentima koji fizički postoje na sajtu.

Sve ostale putanje će biti preusmerena na PHP skript index.php u osnovnom direktorijumu, koji treba da zna šta sa njima da radi.


Podelite ovaj članak sa prijateljima


Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Popunite izraz tako da bude tačan: *