.htaccess վերաուղղումներ

Հեղինակ՝ Artur  ·  21-06-2010 (Թարմացվել է՝ 05-12-11)

Բաժին՝ Տարբեր

htaccess վերաուղղում

Նախորդ հոդվածներից մեկում մենք տեսանք, որ .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 տարրերից («ի՞նչ անել», «ո՞ր ֆայլի/ֆոլդերի հետ հանել», «դեպի ո՞ւր վերաուղղել»)

  1. Redirect 301 – «301 վերաուղղումը» կարելի է սահմանել որպես՝ «տեղափոխված է ընդմիշտ» (moved permanently), այսինքն, քանի դեռ այս Redirect 301-ը մնում է .htaccess-ում գրված, ուրեմն այս հրամանին հաջորդող «հրամանի ազդեցության» տարրերը պետք է կյանքի կոչվեն.
  2. Երկրորդ մասը ( «ո՞ր ֆայլի/ֆոլդերի հետ հանել») իրենից ներկայացնում է /my/hello.php հատվածը: Այսինքն, խոսքն այն մասին է, թե հրամանը ո՞ր ֆայլին/ֆոլդերին է վերաբերում: Մեր օրինակում, 301 մշտական վերաուղղումը գործում է միայն hello.php ֆայլի համար, որի բացարձակ հասցեն է՝ /my/hello.php: Նկատեցիք երեւի, որ բավական չէ գրել ֆայլի անվանումը (նույն անունը կրող ֆայլեր կարող են կայքի սահմաններում լինել բազմաթիվ). մենք պետք է հրամանում հստակեցնենք նաեւ այդ ֆայլի բացարձակ հասցեն (եւ ոչ թե URL հասցեն):
  3. Վերջին՝ երրորդ մասը ( «դեպի ո՞ւր վերաուղղել») այն էջն է, ուր պետք է կատարվի վերաուղղումը՝ 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/

Դարձյալ մեկնաբանենք այս տողը:

  1. Redirect 301
  2. / – նշանակում է, որ վերաուղղման է ենթակա ամողջ կայքի պարունակությունը՝ իր բոլոր ֆոլդերներով ու ֆայլերով հանդերձ, եւ ոչ թե առաձին այս կամ այն ֆայլ/ֆոլդերը:
  3. 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

Հեղինակի մասին
Ողջույն, ես այս բլոգի հեղինակն եմ: Ուրախ կլինեմ, եթե դուք բաժանորդագրվեք բլոգի գրառումներին և ընթերցեք իմ էլ. գրքերը:
Մեր բլոգում -ը գրել է 583 հոդված:
թվիթեր  ֆեյսբուք  գուգլ+  լինքդին  յութուբ RSS 

 

Եթե հավանեցիր այս հոդվածը, ապա միացիր մեր 306 ընթերցողներին և ստացիր անվճար էլ. ծանուցումներ

{ 2 մեկնաբանություն… դիտիր դրանք ներքևում կամ ավելացրու նորը }

Հարութ Հունիս 23, 2010, 8:19 PM-ին

Շատ հետաքրքիր ա ընդհանրապես .htaccess-ը… Ես մի հարց ունեմ ինչպես կարելի է ուղորդել ասենք իմդդոմեյն.ամ-ից դեպի իմդոմեյն.ամ/պապկա/ինդեղ.պհպ ասենք

Շատ մերսի նյութի համար սպասում եմ հաջորդներին գուցե հարցիս պատասխանը լինի:

Պատասխանել

Արթուր Հունիս 24, 2010, 8:21 PM-ին

Ամենապարզ ձեւն իմ կարծիքով սա է:

Քո հիմնային ֆոլդերում (root) ստեղծում ես (եթե չկա) index.php

Ու դարձյալ քո root-ում ստեղծում ես (եթե չկա) կամ առկա .htaccess-ում ավելացնում ես այսպիսի մի տող

Redirect 301 /index.php http://www.your-site.com/your-folder-name/your-php-file.php

Փորձիր, եթե չստացվեց, տեղեկացրու:

Պատասխանել

Չմոռանաք գրել ձեր կարծիքը

Connect with Facebook

Ըստ Հայերեն.ամ
Գրել ՄԻԱՅՆ Հայերեն
Դուք կարող եք օգտագործել հետևյալ HTML թեգերը և ատրիբուտները <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Նախորդ գրառումը.

Հաջորդ գրառումը.