Apache-de mod_rewrite bilen içerki gönükdirmäni nädip ýerine ýetirmeli


Bu makalada we indiki bölümde mod_rewrite nädip ulanmalydygyny, käbir HTTP haýyşlaryny web sahypasyndaky beýleki sahypalara ýa-da daşarky URL-e kartalaşdyrmagy düşündireris.

Başga sözler bilen aýdylanda, bu meşhur Apache moduly size URL-ni başga birine gönükdirmäge mümkinçilik berer, bu amaly mysallar arkaly görkezeris.

BELLIK: Aşakdaky mysallar, iň bolmanda Perl Compatible Regular Expressions (PCRE) bilen birneme tanyşdygyňyzy çaklaýar. Bu mowzuk bu makalanyň çäginden çykmaýandygy sebäpli, PCRE hakda has giňişleýin maglumat üçin Perl 5 wersiýasy 24.0 resminamalaryna serediň.

Dowam etmezden ozal gaýtadan ýazmak modulynyň ýüklenendigine göz ýetiriň. CentOS-da we şuňa meňzeş paýlamalarda, Debian we emele gelen önümlerde bu adaty hereket bolsa-da, ony el bilen aşakdaky ýaly ýüklemeli bolarsyňyz:

# a2enmod rewrite

Mod_rewrite modulyny ulanmak üçin Apache sazlamak

Ityönekeýlik üçin mod_rewrite (DocumentRoot:/var/www/html, konfigurasiýa faýly: /etc/httpd/conf/httpd.conf) ulanmagy düşündirmek üçin CentOS 7 gutusynda (IP 192.168.0.100) deslapky sahypany ulanalyň.

Apache-iň bu moduly ulanmagy üçin konfigurasiýa faýlyna aşakdaky setiri goşuň:

RewriteEngine on

Bu konfigurasiýanyň şol bir gutydaky wirtual öý eýelerine miras galmajakdygyny bellemelidiris.

Şeýlelik bilen, täzeden ýazmak düzgünlerini ulanmak isleýän her wirtual öý eýesi üçin RewriteEngine goşmaly bolarsyňyz.

Içerki gönükdirme mod_rewrite-iň iň ýönekeý mysalydyr. Default.aspx üçin ähli haýyşlary index.html-a gönükdirmek isleseňiz, RewriteEngine-de aşakdaky setiri goşuň (gaýtadan ýazmak düzgüni hem diýilýär).

RewriteRule "^/default\.aspx$" "/index.html"

üýtgeşmeleriň güýje girmegi üçin Apache-i täzeden açmagy ýatdan çykarmaň.

Sahypaňyz ilki ASP ulanyp döredilen bolsa, soňra HTML5-e üýtgedilen bolsa, bu peýdaly bolup biler. Gözleg motorlarynda .aspx faýly indekslener, emma bu faýl indi ýok.

Bu ýagdaýda, geljekki myhmanlaryňyzyň ýalňyşlyk sahypasyna girmezligi üçin haýyşy gönükdirmegiň usulyny tapmaly bolarsyňyz. Synag üçin, aşakdaky mazmunly/var/www/html içinde index.html atly ýönekeý HTML faýly döredeliň:

<!DOCTYPE html>
<html>
  <head>
	<meta charset="utf-8">
	<title>New site</title>
  </head>
  <body>
	<h2>Default.aspx was here, but now it's index.html</h2>
  </body>
</html>

Karet we dollar belgileri yzygiderli aňlatmanyň /default bilen başlaýan we degişlilikde .aspx bilen gutarýan islendik setiriň gabat gelmegine sebäp bolar.

Indi brauzeriňizi işe giriziň we 192.168.0.100/default.aspx görkeziň. Işler garaşylşy ýaly gidýän bolsa, Apache ýerine index.html hyzmat etmeli.
Şeýle-de bolsa, ahyrky ulanyjy üýtgeşmäniň aç-açan bolmagyna sebäp bolýan salgy setirinde default.aspx görer:

Salgy setirindäki URL-iň default.aspx atly sahypanyň ýerine hakykatdanam index.html hyzmat edýändigini görkezmek isleseňiz, [R, L] täzeden ýazmak düzgüniniň soňuna çenli:

RewriteRule "^/default\.aspx$" "/index.html" [R,L]

Bu ýerde [R, L] iki sany goşmaça baýdak bolup, brauzerde (R) doly HTTP gönükdirmesiniň berilmelidigini we mundan başga düzgünleriň işlenmeli däldigini görkezýär:

Salgy setiriniň indi bolşy ýaly default.aspx ýerine garaşylşy ýaly index.html görkezilişine üns beriň.

Bu makalada içerki gönükdirmäni ýerine ýetirmek üçin mod_rewrite nädip ulanmalydygyny düşündirdik. Başga bir serwere göçürilen çeşmä nädip gönükdirmelidigini we baýdaklary täzeden ýazmagyň usullaryny öwrenjek indiki ýazgy üçin habarly boluň.

Hemişe bolşy ýaly, bu makala barada soraglaryňyz ýa-da pikirleriňiz bar bolsa, aşakdaky düşündiriş formuny ulanyp bilersiňiz. Sizden eşitmäge sabyrsyzlyk bilen garaşýarys!