
Նախորդ հոդվածներից մեկում մենք տեսանք, որ .htaccess -ը կարելի է հաջող կերպով օգտագործել՝ այս կամ այն ֆոլդերը կամ ֆայլը դարձնելու անհասանելի երրորդ կողմեին:
Իհարկե, մենք չներկայացրեցինք բոլոր այն նրբությունները եւ առանձնահատկությունները, որոնցից կարելի է օգտվել՝ փակելու այլոց մուտքը Ձեր կայքի կոնկրետ տեղամասեր:
Հիմա զրուցենք .htaccess-ի ոչ պակաս կարեւոր՝ վերաուղղելու (redirection) հնարավորության մասին:
.htaccess վերաուղղման օրինակի դիտարկում
Անմիջապես սկսենք օրինակից. փորձեք Ձեր բրաուզեով բացել այս էջը (որի հասցեն է՝ http://www.e-armenians.com/my/hello.php):
Ինչքան եւ ինչպես էլ դուք փորձեք բացել hello.php էջը, միեւնույն է, դուք կտեսնեք redirect.jpg պատկերը: Ինչո՞ւ… որովհետեւ, .htaccess-ի միջոցով (որն ընկած է կայքի հիմնային (root) ֆոլդերում, ես ավելացրել եմ հետեւյալ տողը.
Redirect 301 /my/hello.php http://www.e-armenians.com/images/redirect.jpg
Առաջին հայացքից գուցե չնկատեք, սակայն այս 1 տողը բաղկացած է հրամանի 3 տարրերից («ի՞նչ անել», «ո՞ր ֆայլի/ֆոլդերի հետ հանել», «դեպի ո՞ւր վերաուղղել»)
- Redirect 301 – «301 վերաուղղումը» կարելի է սահմանել որպես՝ «տեղափոխված է ընդմիշտ» (moved permanently), այսինքն, քանի դեռ այս Redirect 301-ը մնում է .htaccess-ում գրված, ուրեմն այս հրամանին հաջորդող «հրամանի ազդեցության» տարրերը պետք է կյանքի կոչվեն.
- Երկրորդ մասը ( «ո՞ր ֆայլի/ֆոլդերի հետ հանել») իրենից ներկայացնում է /my/hello.php հատվածը: Այսինքն, խոսքն այն մասին է, թե հրամանը ո՞ր ֆայլին/ֆոլդերին է վերաբերում: Մեր օրինակում, 301 մշտական վերաուղղումը գործում է միայն hello.php ֆայլի համար, որի բացարձակ հասցեն է՝ /my/hello.php: Նկատեցիք երեւի, որ բավական չէ գրել ֆայլի անվանումը (նույն անունը կրող ֆայլեր կարող են կայքի սահմաններում լինել բազմաթիվ). մենք պետք է հրամանում հստակեցնենք նաեւ այդ ֆայլի բացարձակ հասցեն (եւ ոչ թե URL հասցեն):
- Վերջին՝ երրորդ մասը ( «դեպի ո՞ւր վերաուղղել») այն էջն է, ուր պետք է կատարվի վերաուղղումը՝ http://www.e-armenians.com/images/redirect.jpg: Ի տարբերություն նախորդ տողի, այստեղ մենք պետք է մուտքագրենք վերաուղղման հանգրվանի URL հասցեն: Մեր օրինակում այն իրենից ներկայացնում էր պատկեր (jpg), սակայն մեկ այլ օրինակում դա կարող է լինել html տիպի ֆայլ (.html), կամ php տիպի ֆայլ (.php)… Բոլոր տարբերակները գրելու փոխարեն, ասեմ մեկ բառով՝ ցանկացած տիպի ֆայլ:
Այս օրինակը շատ պարզունակ էր եւ բերված էր նրա համար, որ մեկընդմիշտ հիշենք, որ .htaccess-ային վերաուղղումը կազմված է 3 տարրերից:
Այժմ եկեք դիտարկենք .htaccess վերուղղման մեկ այլ գործնական օրինակ:
.htaccess վերաուղղում «հին» կայքից դեպի «նոր» կայքը
Նման վերուղղումների անհրաժեշտությունը ծագում է հատկապես այն դեպքում, երբ փոխվում է կայքի URL հասցեն: Ինքս առնչվել եմ այս խնդրի հետ մոտ մի քանի շաբաթ առաջ:
Մի օր քնեցի, զարթնեցի, ու որոշեցի, որ նախկին իմ կայքերից մեկը՝ www.directory.f5blog.com, որն իրենից սուբդոմեյն էր ներկայացնում, փակել ու իր ամբողջ պարունակությամբ տեղափոխել առանձին դոմեյն՝ http://www.e-armenians.com (որը թեեւ գրանցել էի 2008-ին, սակայն «անգործության» էի մատնել):
Չանրադառնանք որոշմանս պատճառներին, այլ միայն նշենք, որ իմ առջեւ խնդիր առաջացավ՝ ինչպե՞ս www.directory.f5blog.com-ից օգտվող այցելուներին վերաուղղել նոր հասցե: Չէ՞ որ, հակառակ դեպքում, ես հաստատ «կկորցնեի» նրանց մի մասին (իրականում, կստացվեր, որ ոչ թե նրանք «անհետացան», այլ՝ ես, «փասա-փուսես» հավաքելով ու քոչելով նոր հասցե):
Այստեղ ինձ օգնության եկավ .htaccess-ը, եւ նախկին կայքի (www.directory.f5blog.com) հիմնային (root) ֆոլդերում ավելացվեց հետեւյալ տողը պարունակող .htaccess.
Redirect 301 / http://www.e-armenians.com/directory/
Դարձյալ մեկնաբանենք այս տողը:
- Redirect 301
- / – նշանակում է, որ վերաուղղման է ենթակա ամողջ կայքի պարունակությունը՝ իր բոլոր ֆոլդերներով ու ֆայլերով հանդերձ, եւ ոչ թե առաձին այս կամ այն ֆայլ/ֆոլդերը:
- http://www.e-armenians.com/directory/ – սա արդեն նոր՝ վերաուղղված հասցեն է:
Այսպիսով, այն անձինք, ովքեր կշարունակեն այցելել www.directory.f5blog.com, կվերաուղղվեն դեպի այս կայքի հայկական կայքերի կայքադարանը (հատուկ շնորհակալությունս նրանց):
Իրականում, ինչ վերաբերում է www.directory.f5blog.com-ի վերաուղղմանը, խնդիրն ավելի բարդ էր, եւ ընկերս օգնեց կատարելու վերաուղղման որոշ ձեւափոխություններ, որը նույնպես այս էջում քննարկելու թեմա չէ: Սակայն, ինչն է պետք հիշել` այն, որ, հայտնվելով համանման իրավիճակներում, դուք կարող եք դիմել .htaccess-ի օգնությանը:
.htaccess վերաուղղում «ոչ-www»-ից դեպի «www» եւ հակառակը
Սա նույնպես հետաքրքիր «նախաձեռնություն» է, որի նպատակը հետեւյալն է՝ նույն կայքին վերաբերող բոլոր էջերը (URL-ները) կամ պետք է բոլորը սկսվեն www-ով, կամ էլ ոչ մեկը չունենա www սկիզբը: Սա շատ կարեւոր է գուգլ-ի եւ մյուս որոնող համակարգերի համար, որոնք www-ով եւ առանց www-ի էջերը դիտարկում են որպես տարբեր կայքեր:
Այսպիսով, ըստ ձեր նախասիրության, որոնող համակարգերը «պահանջում են», որ Ձեր կայքի բոլոր էջերի URL-ները կամ սկսվեն www-ով, կամ էլ չսկսվեն www-ով: Թե որ տարբերակն ընտրել, սա առանձին թեմայում կքննարկվի, իսկ այստեղ պարզապես շեշտենք, որ բոլոր էջերի URL-ների փոխակերպումը www-ով սկսվողների, կամ էլ նույն այս URL-ների դարձնելը առանձ www-ի կարելի է իրականացնել .htaccess-ի միջոցով:
Կրկին բերենք մեր կայքի օրինակը:
Կխնդրի մի պահ կտրվել այս տողերից նայել բրաուզերի վերեւում այս էջի URL հասցեն ու ճշտել՝ հասցեի տողում կա՞ արդոյք www: Իհարկե կա: Բայց սա պատահական չէ, որ մեր այս (ու մնացած բոլոր) էջերի հասցեները սկսվում են www-ով: Սա պայմանավորված է .htaccess-ում մի քանի տող ավելացնելով, որով ես «հրամայել եմ»՝ «իմ այս կայքի բոլոր էջերի URL հասցեներում ավելացնել www»: Փորձեք ձեր բրաուզերով բացել այս էջը՝ http://e-armenians.com/ , որն առանց www-ի է, եւ էջը բացվելուց հետո նայել բրաուզերի հասցեադաշտ. այնտեղ հայտնվեց http://www.e-armenians.com/ :
Եկեք դիտենք կայքի հիմնային (root) ֆոլդերում գտնվող .htaccess-ի այն հատվածը, որը կայքի բոլոր էջերի URL-ները դարձնում է www-ով սկսվող.
# Redirection to www – added by e-Admin for URL canonicalization
RewriteCond %{HTTP_HOST} ^e-armenians.com
RewriteRule (.*) http://www.e-armenians.com/$1 [R=301,L]
Եթե ցանկանայի հակառակը՝ բոլոր էջերի URL-ները դարձնել առանձ www-ի, ապա .htaccess-ի նույն այս հատվածը կստանար հակառակ պատկերը.
# Redirection to non-www – added by e-Admin for URL canonicalization
RewriteCond %{HTTP_HOST} ^www.e-armenians.com
RewriteRule (.*) http://e-armenians.com/$1 [R=301,L]
Հիշեցնենք, որ դիեզի (#) նշանից հետո եկող բառերը ոչ թե հրամանի մաս են կազմում, այլ իմ իսկ խոսքն է՝ «հիշեցումը», թե ինչու եմ ավելացրել հաջորդող 2 տողերը:
Հրամանի առաջին տողը կարելի է վերծանել որպես՝ «այնտեղ, որտեղ կտեսնես e-armenians.com-ով սկսվող էջեր/URL-ներ», իսկ 2-րդ տողը՝ «փոխակերպիր www.e-armenians.com-ով սկսվող էջերի/URL-ների»:
Այս փուլում պետք չէ խորանալ այն հարցերի շուրջ, թե՝ իսկ ի՞նչ են նշանակում այս նշանները՝ %, {HTTP_HOST} , (.*), $1 կամ [R=301,L]: Սրանք Mod Rewrite-ի հատուկ թեգեր են, եւ դրանց կարող եք անդրադառնալ հատուկ նպատակ կամ հետաքրքրություն դրսեւորելու դեպքում միայն:
Աղբյուրը. e-armenians.com
Ողջույն, ես այս բլոգի հեղինակն եմ: Ուրախ կլինեմ, եթե դուք բաժանորդագրվեք բլոգի գրառումներին և ընթերցեք իմ էլ. գրքերը:
Մեր բլոգում Artur-ը գրել է 583 հոդված:
Եթե հավանեցիր այս հոդվածը, ապա միացիր մեր 306 ընթերցողներին և ստացիր անվճար էլ. ծանուցումներ







{ 2 մեկնաբանություն… դիտիր դրանք ներքևում կամ ավելացրու նորը }
Շատ հետաքրքիր ա ընդհանրապես .htaccess-ը… Ես մի հարց ունեմ ինչպես կարելի է ուղորդել ասենք իմդդոմեյն.ամ-ից դեպի իմդոմեյն.ամ/պապկա/ինդեղ.պհպ ասենք
Շատ մերսի նյութի համար սպասում եմ հաջորդներին գուցե հարցիս պատասխանը լինի:
Ամենապարզ ձեւն իմ կարծիքով սա է:
Քո հիմնային ֆոլդերում (root) ստեղծում ես (եթե չկա) index.php
Ու դարձյալ քո root-ում ստեղծում ես (եթե չկա) կամ առկա .htaccess-ում ավելացնում ես այսպիսի մի տող
Redirect 301 /index.php http://www.your-site.com/your-folder-name/your-php-file.php
Փորձիր, եթե չստացվեց, տեղեկացրու: