Теме: URL rewriting

Напредни URL rewriting: заобилажење правила у .htaccess датотеци и password protection независних директоријума

Скраћена веза: http://pedja.supurovic.net/veza/2282

За сваки савремени сајт неопходан услов је да адресе до докумената буду оптимизоване за интернет претраживаче. О томе како се преусмеравају оптимизоване путање на стварни садржај писао сам у чланку Редирекција домена са .htaccess али и без њега.

Понекад се деси да на сајту који већ има подешено преусмеравање оптимизованих путања постоји потреба да се у поддиректоријум смести садржај који је независан.

Ако имате укључену обичну редирекцију и поставите независан поддиректоријум, садржај тог директоријума нећете моћи да прикажете, јер сваки упит ка сајту пролази кроз механизам редирекције и бива усмерен на основни веб сајт.

Да бисте то онемогућили на самом почетку правила за редирекцију (одмах испод линије Rewrite Engine on додајте:

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

Ове две команде објашњавају веб серверу да прво провери да ли постоји датотека (прва линија) или директоријум (друга линија) на наведеној путањи. Ако постоји, он ће приказати тај садржај и неће покретати механизам преусмеравања.

Ово ће осигурати да ваш независни директоријум и његов садржај буду виљиви директно.

Ипак, ако у тај директоријум ставите заштиту приступа лозинком подешавањем .htaccess датотеке и додатном датотеком са лозинкама, то неће радити.

Веб сервер ће покушај приступа садржају који је заштићен лозинком протумачити као приступ непостојећем садржају па ће поново бити активиран механизам преусмеравања. Веб сервер неће тражити лозинку него ће адресу преусмерити на основни сајт, који пошто та адреса није исправна приказати да тражени документ не постоји.

Да се то не би догађало, потребно је да у .htaccess датотеци у којој је подешено преусмеравање нагласите шта да се ради са садржајима за које се тражи лозинка, и то такође пре команди за преусмеравање. Дакле, одмах испод команде Rewrite Engine on додајте:

ErrorDocument 401 default

То ће обезбедити да веб сервер за документе за које је подешен приступ лозинком, заиста затражи лозинку

Коначан изглед .htaccess датотеке може да изгледа овако:

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]

Овако подешена .htaccess датотека неће ометати приступ садржајима заштићеним лозинком и независним директоријумима и документима који физички постоје на сајту.

Све остале путање ће бити преусмерена на ПХП скрипт index.php у основном директоријуму, који треба да зна шта са њима да ради.


Поделите овај чланак са пријатељима


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>

Попуните израз тако да буде тачан: *