Hvernig á að framkvæma innri tilvísun með mod_rewrite í Apache


Í þessari grein og í þeirri næstu munum við útskýra hvernig á að nota mod_rewrite, til að kortleggja ákveðnar HTTP beiðnir á aðrar síður á vefsíðu eða á ytri vefslóð.

Með öðrum orðum, þessi vel þekkta Apache eining gerir þér kleift að beina vefslóð á aðra, sem við munum sýna með hagnýtum dæmum.

ATHUGIÐ: Dæmin hér að neðan gera ráð fyrir að þú sért að minnsta kosti nokkuð kunnugur Perl Compatible Regular Expressions (PCRE). Þar sem það efni er utan gildissviðs þessarar greinar, vísaðu til Perl 5 útgáfu 24.0 skjala fyrir frekari upplýsingar um PCRE.

Áður en þú heldur áfram skaltu ganga úr skugga um að endurskrifareiningin sé hlaðin. Þó að þetta sé sjálfgefin hegðun í CentOS og svipuðum dreifingum, í Debian og afleiðum þarftu að hlaða því handvirkt á eftirfarandi hátt:

# a2enmod rewrite

Að stilla Apache til að nota mod_rewrite Module

Til einföldunar skulum við nota sjálfgefna síðuna í CentOS 7 kassa (IP 192.168.0.100) til að útskýra hvernig á að nota mod_rewrite (DocumentRoot: /var/www/html, stillingarskrá: /etc/httpd/conf/httpd.conf).

Til þess að Apache geti notað þessa einingu skaltu bæta eftirfarandi línu við stillingarskrána:

RewriteEngine on

Það er mikilvægt að hafa í huga að þessi stilling mun ekki erfa sýndarhýsingar í sama kassa.

Þannig þarftu að bæta RewriteEngine við fyrir hvern sýndarhýsil þar sem þú vilt nota umritunarreglur.

Innri tilvísun er einfaldasta dæmið um mod_rewrite. Ef þú vilt beina öllum beiðnum um default.aspx yfir á index.html skaltu bæta við eftirfarandi línu (einnig þekkt sem umritunarregla) undir RewriteEngine á:

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

og ekki gleyma að endurræsa Apache til að breytingarnar taki gildi.

Þetta gæti komið sér vel ef síðan þín var upphaflega hönnuð með ASP og síðar breytt í venjulegt HTML5. Leitarvélar munu hafa .aspx skrána skráða en sú skrá er ekki lengur til.

Í því tilviki þarftu að finna leið til að beina beiðninni svo að væntanlegir gestir þínir renni ekki inn á villusíðu. Til að prófa, búum til einfalda HTML skrá sem heitir index.html inni í /var/www/html með eftirfarandi innihaldi:

<!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>

Caret og dollaramerkin munu valda því að regluleg segð passar við hvaða streng sem byrjar á /default og endar á .aspx, í sömu röð.

Ræstu nú vafrann þinn og beindu honum á 192.168.0.100/default.aspx. Ef hlutirnir ganga eins og búist var við ætti Apache að birta index.html í staðinn.
Hins vegar mun notandinn enn sjá default.aspx í veffangastikunni sem veldur því að breytingin verður algjörlega gagnsæ:

Ef þú vilt að vefslóðin í veffangastikunni sýni að þjónninn sem hann er í raun að þjóna index.html í stað síðu sem heitir default.aspx skaltu bæta við [R, L] í lok umritunarreglunnar sem hér segir:

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

Hér eru [R,L] tveir valfrjálsir fánar sem gefa til kynna að fullkomna HTTP tilvísun eigi að vera gefin út í vafrann (R) og að ekki eigi að vinna úr frekari reglum:

Athugaðu hvernig veffangastikan sýnir nú index.html, eins og búist var við, í stað default.aspx eins og áður.

Í þessari grein útskýrðum við hvernig á að nota mod_rewrite til að framkvæma innri tilvísun. Fylgstu með næstu færslu þar sem við munum læra hvernig á að beina á auðlind sem hefur verið færð á annan netþjón og hvernig á að endurskrifa fána.

Eins og alltaf, ekki hika við að nota athugasemdareyðublaðið hér að neðan ef þú hefur einhverjar spurningar eða athugasemdir um þessa grein. Okkur hlakkar til að heyra frá þér!