Mod_rewrite ներածություն և խաբեբաներ – Արագ հղում

Բացահայտում. Ձեր աջակցությունն օգնում է կայքը պահպանել: Այս էջում առաջարկվող որոշ ծառայությունների համար մենք վաստակում ենք ուղեգրման վճար.


mod_rewrite- ը Apache վեբ սերվերի ծրագրաշարի մի մասն է, որն աշխատում է ձեր վեբ հոստի համակարգչում: Այն թույլ է տալիս URL- ին դինամիկ փոփոխել կամ «վերաշարադրել»:

Գործողության մեջ կտեսնեք mod_rewrite- ը, եթե WordPress- ն օգտագործեք միացված «գեղեցիկ» մալուխներով: Լռելյայնորեն, WordPress- ի բոլոր էջերը բեռնված են ՝ օգտագործելով URL- ն, որը պարունակում է նույնականացման համար, և հնարավոր է նաև այլ փոփոխականներ, որոնք ասում են WordPress- ին, թե ինչ բեռնում: Բայց երբ բավականին դյուրակիր կապերը միացված են, mod_rewrite կանոնները այդ տգեղ փոփոխականները վերածում են բառերի: Արդյունքում URL- ները մենք երբեմն անվանում ենք «մաքուր»:

Mod_rewrite- ով վերաշարադրելը, ըստ էության, URL- ն է կեղտոտից մաքուրից դեպի մաքուր մեկը թարգմանելու գործընթաց: Այցելուն երբեք չի տեսնում URL- ի փոփոխությունը հասցեի սանդղակում, քանի որ վերամշակումն իրականացվում է Apache- ի կողմից, նախքան որևէ բան ուղարկվի այցելուի զննարկչին.

Հնարավոր է վեբ կայք վարել `առանց mod_rewrite- ի կամ URL- ների մաքրման: Բայց ահա թե ինչու է դա օգտագործում մարդկանց մեծ մասը.

  • Մարդկանց URL- ների ընթերցումը հեշտացնելու համար: «Գեղեցիկ» հղումները ավելի հիշարժան են, մուտքագրման ավելի հեշտ և ավելի հեշտ է բարձրաձայն կարդալ.
  • URL- ները հեշտացնելու համար որոնիչները մեկնաբանելու համար: Գեղեցիկ URL- ը որոնիչին ասում է, թե ինչի մասին է էջը, բայց նույնականացման համարների և փոփոխականների կատակ չէ: Որոնիչները սիրում են սեմալտը, ուստի URL վերաշարաշարն օգնում է ապահովել, որ էջը ճիշտ դասակարգվի և ինդեքսավորվի.
  • Ժամանակավորապես ստեղծել վերափոխումներ մեկ ֆայլից կամ այլ ուղուց.

Կազմելով Mod_rewrite կանոնները

Եթե ​​դուք օգտագործում եք Apache- ն, ապա պետք է խնդրեք ձեր վեբ հոստին `mod_rewrite- ը ձեր հաշիվում http.conf ֆայլում միացնելու համար: Շատ դեպքերում, mod_rewrite- ը միացված է լռելյայն.

Հաջորդը, դուք պետք է ստեղծեք .htaccess ֆայլ ձեր հոստինգի հաշվի հիմնական մասում: .Htaccess ֆայլը վերահսկում է արմատային գրացուցակը և դրա տակ գտնվող բոլոր ֆայլերը, եթե չես գերադասում այն ​​մեկ այլ .htaccess ֆայլով, ներքևի ներքևում պահեք թղթապանակի ծառը: Եթե ​​արդեն ունեք .htaccess ֆայլ, նախքան կրկնօրինակը պատճենեք.

Վերաշարադրելու կանոնները ունեն երկու մաս: Առաջին գիծը ակտիվացնում է վերափոխման շարժիչի դիրեկտիվը Apache- ում: (# Տողից սկսած տողը մեկնաբանություն է, որն անտեսվում է:) Mod_rewrite հայտարարության երկրորդ մասը պատմում է վերաշարադրիչի շարժիչը, թե ինչպես պետք է փոխակերպվի URL- ը: Այսպիսով, մենք նշում ենք պայմանը, իսկ հետո մենք Apache- ին ասում ենք, թե ինչ անել: Ահա մի կանոնի օրինակ, որը վերահղում է այցելուին մեկ ֆայլից մյուսը.

# Միացրեք վերաշարադրումը
RewriteEngine- ը միացրեք
# Փոխեք հինname.html- ը newname.html- ում
RewriteRule ^ oldname.html $ newname.html

Այս կանոնը ստուգում է oldname.html կոչվող ֆայլը (պայմանը): Եթե ​​հանդիպում է գտնում, այն դինամիկորեն փոխարինում է այն նոր անունով.html: Վերջնական օգտագործողը տեսնում է oldname.html- ի բովանդակությունը, բայց զննարկչի URL- ի բարում տեսնում է newname.html: Եթե ​​mod_rewrite- ը չհամընկնի հին անունին: html, կանոնը անտեսվում է.

Փնտրում եմ նախշեր

Յուրաքանչյուր URL- ի համար մեկ կանոն ստեղծելը շատ ժամանակ կպահանջի, այնպես որ մենք պետք է կանոնավոր արտահայտություններ օգտագործենք: Սովորական արտահայտությունները փնտրում են նախշեր և տողերի մի կտոր փոխարինում են մյուսին: Վերցրեք այս օրինակը.

# Միացրեք վերաշարադրումը
RewriteEngine- ը միացրեք
# Ստեղծեք հեղինակ / NAME / հեղինակին.php? Id = NAME
RewriteRule ^ հեղինակ / ([[a-z] +) /? $ Author.php? Id = $ 1 [L]

Խզելով այն, ահա, թե ինչպես է գործում ^ հեղինակ / ([a-z] +) /? $ Պայմանը.

  • ^ կանոնը սկիզբն է
  • հեղինակ / այն տողն է, որը մենք փնտրում ենք սկզբնական URL- ում
  • ([a-z] +) վայրի քարտ է. այն փնտրում է բառեր, որոնք հայտնվում են հեղինակից հետո /
  • /? URL- ի վերջում ավելացնում է կտրատումը
  • $ նշվում է պայմանի ավարտը.

Եվ ահա, թե ինչպես է աշխատում aut.php? Id = $ 1 գործողությունը.

  • author.php? id = այն տողն է, որը մենք ուզում ենք գրել
  • $ 1-ը տեղ գտած է վերևում նշված պայմանում գտնված բառերի համար.

Կանոնի վերջում [L] դրոշ է, որը Apache- ին է ասում դադարեցնել այլ կանոններ կիրառելուց, եթե այս գործընթացը մշակվի.

Սա պարզապես շատ հիմնական օրինակ է այն բանի համար, թե ինչ կարող է անել mod_rewrite- ը: [A-z] գրելու փոխարեն մենք կարող էինք [xyz] օգտագործել x, y կամ z տառերը, կամ (y | n) տառերը գտնելու համար, y կամ n: Ստորև բերված ռեսուրսներում կարող եք գտնել ավելի ամբողջական հղումներ կանոնների արտահայտման շարահյուսության մասին.

ՎերաշարադրելRule դրոշները

Վերոնշյալ օրինակում, կանոնի վերջում մենք ավելացրեցինք դրոշ, [L]: Դրոշները պարտադիր չեն: Դրանք պետք է ներառվեն գծի վերջում քառակուսի փակագծերի մեկ այլ շարքում, և եթե ուզում եք օգտագործել բազմաթիվ դրոշներ, ապա դրանց միջև պետք է տեղադրեք ստորակետներ.

Դրոշները կարող են դուրս գրվել ամբողջությամբ կամ որպես կրճատված տարբերակ: Թեև կարճ դրոշների տարածքը ավելի հեշտ է մուտքագրել, երկար դրոշների օգտագործումը լավ գաղափար է, եթե ցանկանում եք հեշտությամբ կարդալ ձեր կոդը.

  • Բ. Փախչում է ոչ այբբենական նիշերից. կարող է պահանջվել AllowEncodedSlashes- ը միացված միացված.
  • C կամ շղթա. Ձեր .htaccess ֆայլում միացնում է հաջորդ կանոնը հաջորդ կանոնին. երկրորդը կատարվում է միայն այն դեպքում, եթե առաջին արդյունքը խաղում է.
  • CO կամ cookie: ստեղծել կանոն, եթե կանոնը համընկնում է. պահանջում է լրացուցիչ ատրիբուտներ.
  • DPI կամ անտեսում. Հեռացնում է PATH_INFO- ը վերաշարադրված URL- ում.
  • E կամ env: սահմանում է շրջակա միջավայրի փոփոխական.
  • Վերջ. Նման է L- ին, սա դադարեցնում է վերաշարադրման ցանկացած այլ վերամշակում.
  • F կամ արգելված. Վերադարձնում է 403 արգելված կարգավիճակը ՝ կանոնին պատասխանումիս.
  • G կամ գնացել. Վերադարձնում է 410 Gone կարգավիճակը `կանոնին պատասխանելով.
  • H կամ բեռնաթափիչ. Կանոնակարգին ստիպում է օգտագործել որոշակի բեռնաթափիչ սարք ՝ օգտագործված որպես փոփոխական.
  • L կամ վերջին. Դադարեցնում է կանոնների մշակումը.
  • N կամ հաջորդ. Նորից սկսվում է կանոնների ընթացիկ շարքը `օգտագործելով կանոնի արդյունքը որպես մուտքագրում.
  • NC կամ nocase. Կանոնից անջատում է գործի զգայունությունը.
  • NE կամ noescape. Հատուկ նիշերը վերածում է դրանց համարժեք քառակուսի կոդերի.
  • NS կամ nosubreq. Դադարում է վերաշարադրումները կիրառել ենթածրագրերի նկատմամբ.
  • P կամ վստահված անձ. Կանոնի արդյունքը մղում է mod_proxy և անտեսում մնացած մնացած կանոնները.
  • PT կամ passthrough. Ֆայլի ուղին URL- ին է վերածում.
  • QSA կամ qsappend. Հարցման տողը համատեղում է նորի հետ.
  • QSD կամ qsdiscard. Հեռացնում է հին հարցման տողը և փոխարինում այն.
  • QSL կամ qslast. Հարցման տողը բաժանում է տողի վերջին հարցային նշանին.
  • R կամ վերահղում. Թողարկել HTTP վերահղում.
  • S կամ բաց թողնել. Բաց է թողնում մի շարք կանոններ. պետք է սահմանվի որպես [S = n], որտեղ n- ը բաց թողնելու կանոնների քանակն է.
  • T կամ տեսակը. Սահմանում է կանոնների պատասխանի MIME տիպը.

վեբ հոստինգի կտրոն

Շատ բան եք փնտրում mod_rewrite հոստինգում?
A2 հոստինգը մեր վերջին արագության թեստերում գրանցեց # 1: Ներկայումս դուք կարող եք խնայել մինչև 50% իրենց ծրագրավորողների համար նախատեսված ծրագրերի համար: Օգտագործեք այս զեղչի հղումը
գործարքը ստանալու համար.

Սերվերի փոփոխականներ

Ստորև ներկայացված ցուցակը պարունակում է շատ սերվերի փոփոխականներ, որոնցից մի քանիսը դուք կկարողանաք օգտագործել mod_rewrite- ով: Ոչ բոլոր փոփոխականներն ապահովված են բոլոր սերվերների կողմից, և հավասարապես, հնարավոր է, որ կարողանաք օգտագործել այստեղ չնշված սերվերի փոփոխականներ.

Եթե ​​դուք արդեն գիտեք HTTP վերնագրերի մասին, այս ցուցակի սերվերի փոփոխականներից շատերը ձեզ ծանոթ կլինեն, բայց կան մի քանիսը, որոնք հատուկ նախատեսված են mod_rewrite- ի օգտագործման համար:.

  • API_VERSION` API տարբերակի ամսաթիվը.
  • AUTH_TYPE` ինքնագիր. վերադարձնում է ՈՉ, ՀԻՄՆԱԿԱՆ, ԴԻԳԵՍՏ կամ ՁԵՎ.
  • CONN_REMOTE_ADDR` հասակակիցների IP հասցե.
  • CONTEXT_DOCUMENT_ROOT. Տեղեկատվություն Apache- ում գրացուցակի քարտեզագրման մասին.
  • CONTEXT_PREFIX. Տեղեկատվություն Apache- ում գրացուցակի քարտեզագրման մասին.
  • DOCUMENT_ROOT` փաստաթղթի բացարձակ ուղին.
  • Ձեռնարկ. Բեռնաթափման անվանումը.
  • HTTP_ACCEPT. HTTP- ի ընդունման վերնագիրը, եթե առկա է HTTP հարցման վերնագրում.
  • HTTP_COOKIE. Cookie- ն, եթե առկա է HTTP հարցման գլխում.
  • HTTP_FORWARDED` իրական ուղին, եթե առկա է HTTP հարցման վերնագրում.
  • HTTP_HOST. Ներկայիս սերվերը, եթե առկա է HTTP հարցման վերնագրում.
  • HTTP_PROXY_CONNECTION` HTTP վստահված ուղին, եթե առկա է HTTP հարցման վերնագրում.
  • HTTP_REFERER` հղում կատարող էջի URL- ին.
  • HTTP_USER_AGENT` օգտագործողի գործակալը, որն օգտագործվել է էջ մուտք գործելու համար.
  • HTTP2. Կապը HTTP2- ով է օգտագործում. վերադառնում է ON կամ OFF.
  • HTTPS. Կապը HTTPS- ով է օգտագործում. վերադառնում է ON կամ OFF.
  • IPV6. Կապը IPVS- ի օգտագործո՞ւմ է. վերադառնում է ON կամ OFF.
  • IS_SUBREQ. Խնդրանքը հարցման ենթակա՞ հարց է. ճիշտ կամ սխալ.
  • PATH_INFO` ուղու տվյալներ, որոնք հետևում են ֆայլի անունին.
  • QUERY_STRING` նշանները URL- ում `հարցական նշանից հետո.
  • REMOTE_ADDR` օգտագործողի IP- ն.
  • REMOTE_HOST. Օգտագործողի լիարժեք որակավորված դոմեյն անուն.
  • REMOTE_USER` վավերացված օգտվողի օգտվողի անունը.
  • REMOTE_IDENT` վավերացված օգտվողի օգտվողի անունը, որը վերադարձվել է նույնականացված.
  • REQUEST_FILENAME. Խնդրանքով ֆայլի կամ սցենարի տեղական ուղին.
  • REQUEST_METHOD. Հարցման եղանակը; ՂԵԿԱՎԱՐ, ՔԱՂԱՔ, ԳՏԱ՞, թե՞ ԿԵՏԱ.
  • REQUEST_SCHEME. URI- ում հայցվող սխեման.
  • REQUEST_URI. URI- ի հարցումը ՝ որպես ուղի.
  • SCRIPT_FILENAME` սցենարի բացարձակ ուղին.
  • SCRIPT_GROUP` սցենարի խմբի անուն.
  • SCRIPT_USER` այն օգտվողը, որը տիրապետում է սցենարին.
  • SERVER_ADDR. Սերվերի IP, որի վրա պահվում է .htaccess ֆայլը.
  • SERVER_ADMIN` սերվերի ադմինիստրատոր, ինչպես կազմաձևված է Apache- ում.
  • SERVER_NAME. Սերվերի անունը, ինչպես կազմաձևված է Apache- ում.
  • SERVER_PORT. Այն նավահանգստի համարը, որին ուղարկվել է հարցումը.
  • SERVER_PROTOCOL` հայցի արձանագրություն և վերանայում.
  • SERVER_SIGNATURE. Սերվերի վարկածը և հյուրընկալողի անունը.
  • SERVER_SOFTWARE. ID- ի տողը սերվերի համար.
  • THE_REQUEST. Խնդրանքը ամբողջությամբ.
  • ԺԱՄԱՆԱԿ. YYYYMMDDHHMMSS ձևաչափով ամսաթիվը և ժամը.
  • TIME_DAY` ընթացիկ օրը.
  • TIME_HOUR` ընթացիկ ժամը.
  • TIME_MIN` ընթացիկ րոպեն.
  • TIME_MON` ընթացիկ ամիսը.
  • TIME_SEC` ընթացիկ երկրորդը.
  • TIME_WDAY. Ընթացիկ օրը, վերադարձվել է որպես համարի (սկսած 0-ից `կիրակի).
  • TIME_YEAR. Ընթացիկ տարին.

Ռեսուրսներ

  • Սկսնակների ուղեցույց Mod_rewrite- ինԱյս ուղեցույցը 2004 թվականից է, բայց լավ հիմք է տալիս mod_rewrite- ի սկզբունքներում.
  • URL վերաշարադրումը սկսնակների համարհամապարփակ ուղեցույց սկսնակների և միջանկյալ օգտագործողների համար.
  • Apache վերաշարադրել Cheatsheetմի խաբեբա թերթի HTML տարբերակ, որն ի սկզբանե հրապարակվել է iLoveJackDaniels.com կայքում.
  • Ընդլայնված կանոնավոր արտահայտությունների ներածությունկանոնավոր արտահայտությունների վերաբերյալ ձեր գիտելիքները զարգացրեք այս ուղեցույցի միջոցով.
  • RegEx Palստուգեք ձեր կանոնավոր արտահայտության շարահյուսը նախքան այն տեղադրեք ձեր կայքում.

Ամփոփում

mod_rewrite- ը Apache- ի պահվածքը վերահսկելու օգտակար և հզոր միջոց է: Դուք կարող եք շատ բաներ անել mod_rewrite- ով, որոնք մենք այստեղ չենք ծածկել: Դրանք ներառում են վերահղում, պատկերի տաքացման կանխում, ձեր կայքի հատուկ այցելուների արգելում և այլն: Mod_rewrite- ի լծակման լավագույն միջոցը սովորական արտահայտությունների մասին սովորելն է.

Հետագա ընթերցում և ռեսուրսներ

Մենք ունենք ավելի շատ ուղեցույցներ, ձեռնարկներ և ինֆոգրաֆիկա, որոնք կապված են վեբի զարգացման հետ.

  • PHP ներածություն և ռեսուրսներ. Իմացեք ամեն ինչ համացանցում օգտագործվող ամենատարածված հետադարձ լեզուով.
  • Networkանցային ծրագրավորում Ինտերնետային վարդակների միջոցով. Իմացեք ամեն ինչ ինտերնետում ցանցի մասին.
  • MySQL ներածություն և ռեսուրսներ. MySQL- ը ինտերնետում ամենատարածված տվյալների բազաներից մեկն է.

Ինչպես ընտրել ճիշտ CMS- ն

Համոզված չեք, թե ինչ CMS- ն եք ուզում օգտագործել: Ստուգեք մեր հոդվածը ՝ Ինչպես ընտրել ճիշտ CMS- ն.

Վեբ-վարպետների գործիքների վերջնական ցուցակը A-Z
Ինչպես ընտրել ճիշտ CMS- ն

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map