.htaccess ilə bağlı problemlər. mod_rewrite istifadəsinə giriş mod_rewrite ilə nə edə bilərsiniz




Modun yenidən yazılması modulu qaydalara əsaslanan URL-lərin yenidən yazılması üçün istifadə olunur. Bu məqalə Ubuntu əməliyyat sistemindəki Apache veb serverində Modun yenidən yazılması dəstəyini necə aktivləşdirəcəyini izah edir.

Modun yenidən yazılması modulunu birləşdirin

/etc/apache2/mods-available qovluğuna gedin və orada Modun yenidən yazma modulunun yüklənməsinə cavabdeh olan rewrite.load faylının olduğundan əmin olun. Bunu etmək üçün konsolda aşağıdakı əmrləri yerinə yetirin:

CD /etc/apache2/mods-available ls

Fayllar siyahısında rewrite.load adlı fayl olmalıdır.

İndi /etc/apache2/mods-enabled kataloquna keçək və rewrite.load faylına simvolik keçid yaradaq. Bunu etmək üçün əmrləri yerinə yetirin:

CD /etc/apache2/mods-enabled sudo ln -s ../mods-available/rewrite.load rewrite.load

Virtual host parametrlərinin dəyişdirilməsi

Sonra, Mod yenidən yazma modulundan istifadə etməli olan virtual hostun parametrlərini dəyişdirməlisiniz. Bunu etmək üçün müəyyən bir host üçün parametrlər faylını açmalısınız. Məsələn, localhost adlı host üçün parametrləri ehtiva edən standart faylı götürək /etc/apache2/sites-available/default. Faylı GEdit redaktorunda açmaq üçün aşağıdakı əmri yerinə yetirin:

Sudo gedit /etc/apache2/sites-available/crocodilus

Faylda bölməni tapın və AllowOverride None xəttini AllowOverride All olaraq dəyişdirin. Bu kimi bir şey görünməlidir:

Seçimlər İndekslər FollowSymLinks MultiViews AllowOverride All Sifarişlərə icazə verin, hamıdan icazə verməyin

Apache-ni yenidən başladın

İndi qalan şey Apache veb serverini əmrlə yenidən başlatmaqdır.

Bu dərs nəyi izah edir mod_rewrite və necə istifadə etmək olar. Üç praktiki nümunə əhatə olunub: 301 yönləndirmə, dost URL-lərin yaradılması və şəkil bağlantılarının bloklanması.

mod_rewrite əla Apache veb server moduludur. Çox çevikdir və bir çox faydalı funksiyaları yerinə yetirə bilər.

Mod_rewrite-dən istifadə mürəkkəb sintaksis və emal mexanizminə görə yeni başlayanlar üçün çətin ola bilər. Bununla belə, bir neçə əsas anlayışı başa düşdükdən sonra öz serveriniz üçün mod_rewrite-dən effektiv şəkildə istifadə edə bilərsiniz.

Bu dərsdə biz öz veb saytınız üçün istifadə edə biləcəyiniz real nümunələrdən istifadə edərək bir neçə əsas mod_rewrite qaydalarını necə yaratmağı öyrənəcəyik. Əgər onların nə olduğunu bilmirsinizsə, müntəzəm ifadələr haqqında materialı diqqətlə öyrənmək tövsiyə olunur.

mod_rewrite nədir?

mod_rewrite URL-lərin manipulyasiyası (dəyişdirilməsi) üçün Apache server moduludur. Çox vaxt bu, ziyarətçidən URL sorğusu almaq və onlara fərqli bir URL-dən məzmun göndərmək deməkdir. Məsələn, ziyarətçi brauzerin ünvan çubuğuna aşağıdakı URL-i daxil edir:

http://www.example.com/page.html

Adətən Apache page.html faylının məzmununu istifadəçiyə geri göndərir. Bununla belə, siz müxtəlif URL-dən məzmun göndərmək üçün mod_rewrite istifadə edə bilərsiniz, məsələn:

http://www.example.com/başqa_səhifə.html

Ünvan dəyişikliyinin Apache serverində baş verdiyini başa düşmək vacibdir. Brauzerin ünvan çubuğu hələ də http://www.example.com/page.html göstərəcək, lakin Apache serveri http://www.example.com/another_page.html səhifənin məzmununu göndərəcək. Bu, brauzerə başqa URL-i ziyarət etməyi əmr edən HTTP yönləndirməsindən fərqlidir.

Mod_rewrite modulundan istifadə etsəniz də, siz HTTP yönləndirməsini və HTTP xəta kodlarını qaytarmaq kimi bir çox başqa funksiyaları yerinə yetirə bilərsiniz.

mod_rewrite ilə nə edə bilərsiniz

Mod_rewrite modulu URL-lərin manipulyasiyası üçün qaydalar yaratmağa imkan verir. Məsələn, dinamik URL yönləndirməsi yaradaraq, tələb olunan URL-dən əldə edilmiş dəyəri yeni URL-ə daxil edə bilərsiniz. Və ya HTTP_USER_AGENT (brauzer növü) kimi server dəyişənlərini yoxlaya və URL-i yalnız iPhone-da işləyən Safari kimi brauzerdən istifadə edirsinizsə dəyişə bilərsiniz.

Mod_rewrite-in yerinə yetirdiyi bəzi ümumi funksiyalar bunlardır:

  • "Yalnız" URL-ləri maskalayan "dost" URL-lər yaradın. Məsələn, əsl URL www.example.com/display_article.php?articleId=mənim-məqaləsini gözəl görünən www.example.com/articles/my-article/ URL ilə maskalaya bilərsiniz. Və hər kəs həqiqi URL əvəzinə "dost" URL istifadə edə biləcək.
  • Saytınızdakı şəkil bağlantılarının istifadəsini bloklayın. Başqalarının saytınızda yerləşdirilən şəkillərdən istifadə etməsini dayandırmaq üçün, istinad edən URL saytınıza aid deyilsə, mod_rewrite istifadə edərək "Qadağan edilmiş" xətası göndərə bilərsiniz.
  • Kanonik URL-lərin yönləndirilməsi. Bir çox səhifələrə çoxsaylı URL-lər vasitəsilə daxil olmaq mümkündür—məsələn, www.example.com/mypage.html və example.com/mypage.html. Brauzeri daimi olaraq www.example.com/mypage.html kimi "düzgün" URL-ə yönləndirmək üçün mod_rewrite istifadə edə bilərsiniz. Digər şeylər arasında mod_rewrite-in bu istifadəsi axtarış nəticələrində düzgün URL-nin göstərilməsini təmin edir.
  • Saytınızı yenidən təşkil edərkən 404 səhvini aradan qaldırın. Məsələn, siz vebsaytı yenidən dizayn edirsiniz və www.example.com/myarticle.html səhifəsini yeni www.example.com/articles/myarticle.html URL-ə köçürdünüz. mod_rewrite ilə siz www.example.com/myarticle.html ünvanını www.example.com/articles/myarticle.html ünvanına yönləndirə bilərsiniz ki, ziyarətçi köhnə URL-i ziyarət edərkən 404 "tapılmadı" xətası almasın. mod_rewrite çevikliyi sayəsində siz asanlıqla köhnə URL-lərə sorğuları yeni URL-lərə yönləndirəcək bir qayda yarada bilərsiniz.

mod_rewrite-dən necə istifadə etmək olar

mod_rewrite istifadə etmək üçün modula nə edəcəyini bildirmək üçün Apache direktivləri yaratmalısınız. Direktivlər sadə konfiqurasiya parametrləridir. Tez-tez direktivlər veb saytınızın kök qovluğunda .htaccess faylına yerləşdirilir. Direktivlər bütün sayta aiddir.

Ən vacib iki mod_rewrite direktivləri bunlardır:

  • RewriteEngine: Cari sorğu üçün mod_rewrite mexanizmini aktivləşdirir/deaktiv edir.
  • Yenidən Yazma Qaydası: URL-in dəyişdirilməsi qaydasını təsvir edir.

Budur sadə bir nümunə. Aşağıdakı məzmunlu .htaccess faylı yaradın və onu saytınıza yerləşdirin:

RewriteRule-də RewriteEngine ^dummy\.html$ http://www.google.com/

Bu fayl aşağıdakı parametrləri müəyyən edir:

  • RewriteRule ^dummy\.html$ http://www.google.com/ - 301 yönləndirməsindən istifadə edərək sorğuları dummy.html səhifəsinə Google veb saytına yönləndirin.

Əgər indi veb-brauzerinizi açıb saytınızdakı dummy.html səhifəsinə daxil olursunuzsa (məsələn, ünvan çubuğuna http://www.example.com/dummy.html daxil etməklə), onda hər şey səhvsiz edilibsə , siz http://www.google.com saytına yönləndiriləcəksiniz.

Əgər 404 xətası alırsınızsa, o zaman hostinqiniz yəqin ki, mod_rewrite istifadə etmir. Bu halda, hosting administratorunuzla əlaqə saxlamalısınız.

RewriteRule necə işləyir

Yenidən yönləndirmə qaydaları yaratmaq üçün RewriteRule direktivindən istifadə edə bilərsiniz. Direktivin ümumi sintaksisi belədir:

RewriteRule Nümunəsinin Dəyişdirilməsi

  • Nümunə- müntəzəm ifadə nümunəsi. URL nümunə ilə uyğun gəlirsə, qayda yerinə yetirilir. Əks halda qayda atlanır.
  • Əvəzetmə- şablona uyğun ünvan əvəzinə istifadə ediləcək yeni URL.
  • - qaydanın davranışını müəyyən edən bir və ya bir neçə bayraq.

Siz .htaccess faylınıza lazım olan qədər RewriteRules əlavə edə bilərsiniz. Mod_rewrite modulu hər dəfə sorğu ediləndə bütün qaydalardan keçir, müvafiq URL-ləri emal edir.

Qayda tələb olunan URL-i yeni ünvana dəyişirsə, o zaman yeni URL .htaccess faylını keçərkən daha da istifadə olunur və faylda daha sonra yerləşən başqa RewriteRule ilə uyğunlaşa bilər. (Bu davranışı dəyişdirmək lazımdırsa, L bayrağından (“son qayda”) istifadə etməlisiniz.)

mod_rewrite istifadəsinə bəzi nümunələr

Mod_rewrite-i izah etməyin ən asan yolu onun praktiki məsələlərin həllində istifadəsini göstərməkdir.

Misal 1: 404 xəta istisnası

Bəzən saytınızdakı səhifənin URL-i dəyişir. Bu məzmun yenidən təşkil edildikdə baş verə bilər. Əgər axtarış motoru və ya digər saytlar köhnə URL-ə keçid verirsə, istifadəçi linkdən istifadə etməyə çalışarkən "404 Tapılmadı" xətası alacaq.

Bu problemi həll etmək üçün mod_rewrite modulundan istifadə edərək 301 yönləndirməsini həyata keçirə bilərsiniz.Bu, köhnə URL-i tələb edən istənilən brauzerə HTTP başlığını göndərərək səhifənin yeni ünvana köçürüldüyünü bildirir. O, həmçinin axtarış motorlarına indekslərini yeni URL ilə yeniləməyi bildirir.

Aşağıdakı .htaccess faylı sorğuları yeni URL-ə yönləndirəcək:

RewriteRule-də RewriteEngine ^my-old-url\.html$ /my-new-url.html

RewriteRule belə işləyir:

  • ^my-old-url\.html$ dəyişdiriləcək URL-ə uyğun gələn müntəzəm ifadədir. Nümunənin mənası: "URL-in əvvəlinə (^), ardınca "my-old-url.html" mətni və ardınca URL simvolunun sonuna ($) uyğun gəlir." Normal ifadədə nöqtə (.) simvolu istənilən simvola uyğun gəlir, ona görə də biz nöqtə (\.) axtardığımızı göstərmək üçün tərs xəttdən istifadə etməliyik.
  • /my-new-url.html - dəyişdirilməli olanları təsvir edən RewriteRule-nin ikinci hissəsi. Bu halda o, sadəcə olaraq /my-new-url.html-dir.
  • kvadrat mötərizədə yerləşdirilmiş bir və ya bir neçə bayraqdan ibarət qaydanın üçüncü hissəsi. Bayraqlar sizə qaydaya xüsusi seçimlər və ya hərəkətlər əlavə etməyə imkan verir. Bu nümunə 2 bayraqdan istifadə edir: R=301 “yeni URL-yə 301 yönləndirmədən istifadə” deməkdir; və L "son qayda" deməkdir və ya başqa sözlə "qaydaya uyğundursa, URL-in emalını dayandırın".

Misal 2: Dost URL-lərin yaradılması

Deyək ki, siz vebsaytınızda məqalələri göstərmək üçün display_article.php PHP skripti yazmısınız. Aşağıdakı URL-dən istifadə edərək məqaləyə keçid edə bilərsiniz:

Http://www.example.com/display_article.php?articleId=mənim məqaləm

Bu ünvan çirkin görünür və içindəki sorğu (?articleId=my-article) bəzi axtarış sistemlərini çaşdıra bilər. Bu kimi bir URL istifadə etmək daha yaxşıdır:

Http://www.example.com/articles/my-article/

Birinci formatdakı bağlantıları ikinciyə çevirmək üçün mod_rewrite istifadə edə bilərsiniz, bu, sayt səhifələrində dostluq əlaqələrindən istifadə etməyə imkan verəcək və heç kimə görünməyən real ünvanlara giriş təmin ediləcəkdir. Bunun üçün saytınızın kök kataloqunda yerləşən .htaccess faylında aşağıdakı sətirlər olmalıdır:

RewriteRule-də RewriteEngine ^məqalələr/([^/]+)/?$ display_article.php?articleId=$1 [L]

Yenidən Yazma Qaydasının təsviri:

  • ^articles/([^/]+)/?$ məqalələr/(məqalə ID)/ formatında istənilən URL-ə uyğun gələn müntəzəm ifadədir. Burada deyilir: "URL-in əvvəlinə (^) uyğun gəlir, ardınca məqalələr/ , ardınca bir və ya daha çox slash olmayan simvol ([^/]+) , ondan sonra slash (/?) ola bilər, ardınca URL bitiş simvolu ilə ($) ". Nümunənin [^/]+ hissəsinin ətrafındakı mötərizələrə diqqət yetirin. Beləliklə, verilmiş hissəyə uyğun olan mətn, məsələn, "mənim məqaləm" sonradan istifadə üçün saxlanılır.
  • display_article.php?articleId=$1 - qaydanın bu hissəsi Apache serverinə adi ifadənin birinci hissəsindən [^/]+ alt modelinə uyğun gələn mətni ötürülən display_article.php skriptindən istifadə etməyi bildirir (məsələn, "mənim məqaləm") articleId parametri kimi. $1 adlanır rəy və alt şablona uyğun mətni saxlayır. Əgər müntəzəm ifadədə mötərizədə başqa alt model varsa, onda müvafiq mətn $2 dəyişənində saxlanılacaq və s.
  • [L] - əvvəlki misalda olduğu kimi, URL-in sonrakı işlənməsini dayandırmaq üçün bayraqdan istifadə edirik ki, ünvan başqa Yenidən Yazma Qaydaları ilə dəyişməsin.

Yuxarıdakı RewriteRule tələb olunan URL-i http://www.example.com/articles/my-article/ formatında götürür və onu http://www.example.com/display_article.php?articleId=my kimi URL-ə çevirir. -məqalə .

Misal 3: Saytınızda Şəkil Bağlantılarının qarşısının alınması

Mod_rewrite modulunun həll etdiyi başqa bir tipik vəzifə digər veb-layihələrin saytınızdakı şəkillərə keçidlərdən istifadəsinin qarşısını almaqdır. Tutaq ki, sizin http://www.example.com/mypage.html saytınızda aşağıdakı img teqini ehtiva edən bir səhifəniz var:

Başqa bir sayt öz səhifələrində bu kimi fotoşəkilinizə birbaşa keçid edə bilər:

Bu o deməkdir ki, başqasının saytı nəinki sizin şəklinizi “borc alır”, həm də şəkli öz səhifələrində göstərmək üçün server trafikinizin bir hissəsini istifadə edir. Başqasının saytında böyük bir ziyarətçi axını varsa, bu vəziyyət problemə çevriləcək!

Özünüzdən başqa bütün saytların şəkil keçidlərindən istifadəsini dayandırmaq üçün aşağıdakı mod_rewrite direktivlərindən istifadə edə bilərsiniz. Aşağıdakı kodu saytınızın kök kataloqundakı .htaccess faylına və ya qorumaq istədiyiniz şəkillərin olduğu qovluğa yerləşdirin. example.com-u domen adınıza dəyişdirin.

RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !^http://(www\.)?example\.com/.*$ RewriteRule .+\.(gif|jpg|png)$ - [ F]

Bütün kopyalama əməliyyatlarını bitirdikdən sonra, www.example.com və ya example.com-dan başqa domen adı ilə başlayan URL-dən istifadə edərək saytınızdan şəkillər tələb edən hər hansı brauzer "403 Qadağan" xətası alacaq. digər saytlarda şəkillərinizə keçidləri dayandıracaq.

Bu qaydalar dəsti necə işləyir:

  • RewriteEngine aktivdir - mod_rewrite mexanizmini aktivləşdirin
  • RewriteCond %(HTTP_REFERER) !^$ - RewriteCond başqa bir mod_rewrite direktividir. Bu, aşağıdakı RewriteRule tərəfindən işlənəcək bir URL üçün yerinə yetirilməli olan şərti təyin etməyə imkan verir. Bu halda şərt HTTP_REFERER dəyişənində dəyərin olmasıdır.
  • RewriteCond %(HTTP_REFERER) !^http://(www\.)?example\.com/.*$ - ikinci RewriteCond direktivi tələb edir ki, HTTP_REFERER dəyişəninin dəyəri http://www.example.com ilə başlamasın. / və ya http://example.com/. Bayraq hərf həssaslığını təyin edir.
  • RewriteRule .+\.(gif|jpg|png)$ - [F] - yuxarıdakı iki əvvəlki RewriteCond şərti yerinə yetirilmirsə, qayda atılır. URL-də şəkil faylının adı varsa (sətir .gif , .jpg və ya .png ilə bitir) qaydanın özü "403 Qadağandır" ([F] bayrağı istifadə olunur) xətasını qaytarır. Əvəzetmə parametrindəki tire "" deməkdir. URL-i başqa ünvanla əvəz etməyin".

Yəni, .htaccess faylındakı bütün qaydalar toplusu bildirir ki, əgər HTTP_REFERER dəyişəni dəyərdən ibarətdirsə və o, http://example.com/ və ya http://www.example.com/ ilə başlamazsa və tələb olunan URL şəkil faylının adını ehtiva edir, onda siz "403 Qadağan" xətası ilə sorğudan imtina etməlisiniz.

Nəticə

Bu dərslikdə biz URL-ləri manipulyasiya etmək üçün Apache mod_rewrite server modulundan istifadəyə giriş təqdim etdik. Müzakirə olunan üç praktiki nümunə modulun bütün imkanlarının yalnız kiçik bir hissəsini əhatə edir. Rus dilində mod-rewrite haqqında daha ətraflı məlumat tapa bilərsiniz.

Əhəmiyyətli:

    Fayl dəstəyi ".htaccess" Yalnız Linux hostinqində mövcuddur. Funksiyaya sahib olan Windows-da ".htaccess" faylı icra edir web.config.

    Dəstək modulu ".htaccess" Linux ƏS əsasında bütün paylaşılan hosting planlarında mövcuddur. CMS quraşdırarkən dəstəyin olmaması barədə mesaj alsanız ".htaccess" sadəcə göz ardı edin.

.htaccess faylım yoxdur, nə etməliyəm?

Əgər siz Apache veb serverini qurursunuzsa, lakin faylınız yoxdursa .htaccess, onu yaradın və lazımi direktivləri yazın.

Yaratmaq .htaccess, təlimatlara uyğun olaraq hosting idarəetmə panelinizə daxil olun: Faylı tapın .htaccess məqalədən istifadə edərək sayt kataloqunda: .

Bir faylı təsadüfən silmisinizsə .htaccess, bərpa edin. Və ya standart bir fayl əlavə edin .htaccess CMS üçün:

.htaccess faylı cPanel-də görünmür

CPanel-də gizli faylları (nöqtə ilə başlayan) görmək üçün bu addımları yerinə yetirməlisiniz:

Modun yenidən yazılmasını necə aktivləşdirmək olar?

Modul "mod_rewrite" bütün Linux hosting planlarında mövcuddur. Aktivləşdirmək üçün "mod_rewrite" fayla əlavə edin .htaccess görüntü sətri.

Bəzən insanlar problemlə üzləşirlər - apache server .htaccess faylınızı oxumur və ya apache URL-i yenidən yazmır və biz konfiqurasiya fayllarında düzgün yenidən yazma qaydalarından istifadə edirik. Bu, yenidən yazma modulunun apache-yə daxil edilməməsi səbəbindən baş verir. Mod_rewrite modulu serverdə defolt olaraq aktiv olmadığı üçün yenidən yazmaqdan istifadə etmək üçün mode_rewrite funksiyasını əl ilə aktivləşdirməlisiniz. “Debian/Ubuntu-da Apache üçün mod_rewrite modulunu aktivləşdir” məqaləmdə bunu necə edə biləcəyimi sizə xəbər verəcəyəm.

1. Apache2-də mod_rewrite modulunun işə salınması

Bunun üçün mən Apache 2 veb serverində istənilən modulu aktivləşdirmək üçün "a2enmod" əmrindən istifadə edirəm. Beləliklə, apache üçün mod_rewrite modulunu aktivləşdirmək üçün aşağıdakı əmrdən istifadə edin:

$ sudo a2enmod yenidən yazın

2. Virtual hostda ReWrite funksiyasını aktivləşdirin

Apache üçün ReWrite modulunu aktiv etdikdən sonra virtual host üçün konfiqurasiya faylınıza "AllowOverride All" əlavə etməlisiniz. Bu parametr həmçinin əsas apache konfiqurasiya faylını redaktə etməklə qlobal olaraq aktivləşdirilə bilər:

Seçimlər İndekslər FollowSymLinks AllowOverride All

3. Apache2 konfiqurasiyasını yenidən başladın

Apache üçün mod_rewrite modulunu aktiv etdikdən sonra Apache2 serverini yenidən işə salmalısınız:

# xidmət apache2 yenidən başladın

“Debian/Ubuntu-da Apache üçün mod_rewrite modulunu aktivləşdirin” mövzusu artıq tamamlandı.

Onlayn mağazaya son səfərinizi xatırlayın. Axtardığınız məhsulu tapdıqdan sonra, yəqin ki, belə bir URL görəcəksiniz:

Bu, bu saytın tərtibatçılarının müxtəlif məhsul kateqoriyaları üçün ayrıca kataloqlar yaratmaq üçün çox vaxt sərf etmələri ilə deyil, mod_rewrite adlı rahat modul sayəsində baş verir. Bu modul sizə fərdi və sadələşdirilmiş URL-lər yaratmağa imkan verir. URL əslində belə görünür:

http://www.buy-online.com/gp/itemB004RYVI0Q/ref=as_li_ss_tl?

Bu təlimat bu modulun aktivləşdirilməsini, .htaccess səhifəsinin yaradılmasını və istifadəsini və URL-in yenidən yazılmasının qurulmasını əhatə edir.

Tələblər

Bundan əlavə, əvvəlcə apache-ni quraşdırmalısınız. Bu veb serveri Ubuntu-da tez quraşdırmaq üçün əmrdən istifadə edin:

sudo apt-get install apache2

1: mod_rewrite funksiyasını aktivləşdirin

Əvvəlcə mod_rewrite funksiyasını aktivləşdirməlisiniz, bu çox sadədir:

sudo a2enmod yenidən yazın

Bu əmr modulu aktivləşdirəcək və ya modul artıq aktivdirsə, “Modulu yenidən yazmaq artıq aktivləşdirilib” mesajını göstərəcək.

2: .htaccess nədir?

Modul aktivləşdirildikdən sonra siz sayt kataloqunda .htaccess faylı yaratmaqla linkin yenidən yazılmasını konfiqurasiya edə bilərsiniz.

.htaccess faylı server konfiqurasiya fayllarını dəyişmədən saytı dəqiq tənzimləmək üsuludur. Faylın adını başlayan nöqtə faylın gizləndiyini bildirir.

Bundan əlavə, .htaccess faylının yerləşdirilməsi vacibdir, çünki bu faylın parametrləri onun yerləşdiyi kataloqun bütün fayllarına və alt kataloqlarına təsir edəcəkdir.

Siz mətn redaktorundan istifadə edərək .htaccess faylı yarada və sonra onu ftp müştərisindən istifadə edərək sayta yükləyə bilərsiniz.

Qeyd: fayl tam olaraq .htaccess adlandırılmalıdır; Fayl adında əlavə uzantılar olmamalıdır.

Alternativ olaraq, bu əmrdən istifadə edərək, example.com-u saytın domen adı ilə əvəz edərək terminal vasitəsilə .htaccess faylı yarada bilərsiniz.

.htaccess faylı daxil olmaqla

.htaccess faylının standart sayt parametrlərini ləğv etməsinə icazə vermək üçün konfiqurasiya faylını açın.

Qeyd: Bunun üçün yüksək sudo imtiyazları tələb olunacaq.

sudo nano /etc/apache2/sites-available/default

Bu faylda aşağıdakı bölməni tapın və AllowOverride xəttinin dəyərini dəyişdirin (Heç birisini Hamısı ilə əvəz edin). Nəticədə bölmə belə görünəcək:


Seçimlər İndekslər FollowSymLinks MultiViews
Hamısını ləğv etməyə icazə verin
Sifariş icazə verin, rədd edin
hamıdan icazə

Dəyişiklikləri saxladıqdan və faylı bağladıqdan sonra apache serverini yenidən başladın. İndi .htacess faylları bütün server saytları üçün əlçatandır.

sudo xidməti apache2 yenidən başladın

İndi saytınızın URL-lərini yenidən yazmağa hazırsınız.

3: URL-lərin yenidən yazılması

Bütün URL-nin yenidən yazılması əməliyyatı .htaccess faylında baş verir. Ümumiyyətlə, bütün URL yenidən yazma əmrləri eyni nümunəyə əməl edir:

RewriteRule Nümunəsinin Dəyişdirilməsi

Bu əmrdə istifadə olunan seçimlər:

  • RewriteRule: Bu, lazımi direktivləri təyin edə biləcəyiniz bölmədir.
  • Nümunə: Bu bölmə adi ifadələrdən istifadə edərək istədiyiniz URL-i şərh etmək üçündür. Bu dərslik müntəzəm ifadələri əhatə etmir; Bu mövzuda bəzi faydalı məlumatları Apache saytında tapa bilərsiniz.
  • Əvəzetmə: Səhifənin faktiki URL-ni göstərir. Bu linki yadda saxlamaq çətindir, çünki o, PHP parametrlərindən və ya uzun rəqəm sətirlərindən ibarətdir, məsələn: www.besthop.com/gadgets.php?innovation=laptops
  • Könüllü Bayraqlar: Bayraq ifadənin davranışını dəyişə bilən RewriteRule direktivinin sonundakı teqdir. Bəzi ümumi bayraqlar: [F] URL-lərə icazə vermir, böyük hərflərə məhəl qoymur və ya istifadə olunan yönləndirmə koduna nəzarət edir, [L] bunun seriyadakı son qayda olduğunu göstərir.

URL Yenidən Yazma Nümunələri

Misal 1: A səhifəsini açın - B səhifəsinə keçin

Bu URL-nin yenidən yazılmasının ən əsas nümunəsidir: sayt ziyarətçisi brauzerə bir URL daxil edir, lakin digərinə yönləndirilir. Bu davranışı konfiqurasiya etmək üçün bu bölmədəki təlimatları izləyin.

Başlamaq üçün iki veb sayt səhifəsi yaradın; məsələn, birincisi alma (apples.html), ikincisi isə portağal (portağal.html) haqqındadır.

Bu kodu kopyalayın:



alma


Bu səhifə alma haqqındadır



Sonra ikinci səhifə yaradın (bu halda portağallara həsr olunmuş səhifə). Bunun üçün sadəcə olaraq bu kod blokundakı almaları Portağal ilə əvəz edin.

Sonra .htaccess faylını açın:

sudo nano /var/www/example.com/.htaccess

Aşağıdakı URL yenidən yazma əmrlərini ona əlavə edin:

RewriteEngine aktivdir
RewriteRule ^oranges.html$ apples.html

Faylı saxla və bağlayın.

Sonra /oranges.html səhifəsinə daxil olun, orada /apples.html səhifəsinin məlumatları olacaq.

Yuxarıdakı əmrə daha yaxından nəzər salaq:

  • ^oranges.html: İstədiyiniz səhifənin necə başladığını təyin edir. Karet (^) xəttin başlanğıcını göstərir. Başqa sözlə, URL-nin yenidən yazılması lazım olan səhifə fərqli başlasaydı (məsələn, oranges.html əvəzinə oranges_1.html), o, yenidən yazma qaydasına uyğun gəlməyəcək və birds.html-ə yönləndirilməyəcək.
  • $: Dollar işarəsi URL-in sonunda yerləşdirilir. Yenə də əgər sətir fərqli şəkildə bitirsə (məsələn, elan edilmiş son simvoldan sonra hər hansı simvol varsa), veb səhifə yenidən yazma qaydası ilə tanınmayacaq.
  • apples.html: Brauzer trafiki bu səhifəyə yönləndirir.

Misal 2: URL-də alt kataloq kimi parametr

URL-i yoxlayın:

http://example.com/results.php?products=apple

Daha aydın şəkildə göstəriləcək:

http://example.com/products/apple

Bunu etmək üçün .htaccess-ə aşağıdakı sətirləri əlavə etməlisiniz:

RewriteEngine aktivdir
RewriteRule ^məhsullar/(+)/?$ results.php?products=$1

Bu sətirlər aşağıdakı variantlardan ibarətdir:

  • ^məhsullar: Bu halda, yönləndirilmək üçün URL məhsul sözü ilə başlamalıdır (qeyd edək ki, bu, yalnız domendən sonrakı mətnə ​​aiddir). Yenə də URL fərqli başlasa, qayda tətbiq edilməyəcək.
  • (+): Bu mötərizəli mətn URL-nin istənilən simvoldan ibarət ola biləcəyini göstərir. Artı işarəsi mötərizədə bir və ya bir neçə simvolun daxil edilə biləcəyini göstərir.
  • /?$: Dollar işarəsi xəttin sonunu göstərir. Sual işarəsi xəttin sonunda kəsik işarəsi qoymağa imkan verir (baxmayaraq ki, bu tələb olunmur).
  • : Bu, qaydanın bütün simvolların hallarına məhəl qoymaması lazım olduğunu göstərən ifadənin sonundakı bayraqdır.

Misal 3: Təmiz bağlantıların qurulması

Bu funksiya saytınızın URL-ləri çox uzun və ya mürəkkəb olduqda faydalıdır.

Nümunə olaraq bu URL-i götürə bilərsiniz:

http://example.com/results.php?products=produce&type=fruit&növləri=alma

http://example.com/produce/fruit/apple

Bunu etmək üçün .htaccess-ə aşağıdakı sətirləri əlavə etməlisiniz (yeri gəlmişkən, .htaccess-də belə bölmələrin sayı qeyri-məhdud ola bilər):

RewriteEngine aktivdir
RewriteRule ^(ət|istehsal|süd)/([^/.]+)/([^/.]+)$ results.php?products=$1&type=$2&növ=$3

Bu koda daha ətraflı baxaq:

  • Kvadrat (^ simvolu) ifadənin başlanğıcını göstərir.
  • (ət|məhsul|süd məhsulları): Göstərilə bilən parametrləri məhdudlaşdırmaq üçün yalnız mötərizədə icazə verilən dəyərləri göstərin (bu halda ət, məhsul və süd). Əgər URL-də mötərizədə olmayan parametr varsa, yenidən yazma baş verməyəcək.
  • ([^/.]+) işarə edir ki, karetdən sonrakı simvollardan başqa hər şey (bu halda kəsik xətt və nöqtə) dirsək işarəsi ilə yazıla bilər.
  • results.php?products=$1&type=$2&species=$3: Mötərizədə olan hər bir dəyər çıxarılacaq və sonra əvəzetmə hissəsində daha uzun URL-ə daxil ediləcək. $1 birinci mötərizəni, $2 - ikinci, $3 - müvafiq olaraq üçüncü göstərir.

Məqalənin davamını tapa bilərsiniz.

Etiketlər: ,