Bii o ṣe le Ṣe Itunṣe Inu pẹlu mod_rewrite ni Apache


Ninu nkan yii ati ni atẹle a yoo ṣe alaye bi o ṣe le lo mod_rewrite, lati ya awọn ibeere HTTP kan si awọn oju-iwe miiran ni oju opo wẹẹbu kan, tabi si URL itagbangba.

Ni awọn ọrọ miiran, modulu Apache olokiki yii yoo gba ọ laaye lati ṣe atunṣe URL si miiran, eyiti a yoo ṣe apejuwe nipasẹ awọn apẹẹrẹ iṣe.

AKIYESI: Awọn apẹẹrẹ ti o wa ni isalẹ ro pe o kere ju ni itumo ti o mọ pẹlu Awọn asọye Deede ibaramu Perl (PCRE). Niwọn igba ti akọle yẹn ko ti dopin ti nkan yii, tọka si awọn docs ẹya 24.0 Perl 5 fun awọn alaye diẹ sii lori PCRE.

Ṣaaju ki o to tẹsiwaju, rii daju pe o ti kojọpọ module atunkọ naa. Botilẹjẹpe eyi jẹ ihuwasi aiyipada ni CentOS ati awọn pinpin kaakiri iru, ni Debian ati awọn itọsẹ iwọ yoo nilo lati kojọpọ pẹlu ọwọ bi atẹle:

# a2enmod rewrite

Tito leto Apache lati Lo Module_ modẹmu

Fun ayedero, jẹ ki a lo aaye aiyipada ni apoti CentOS 7 kan (IP 192.168.0.100) lati ṣalaye bi o ṣe le lo mod_rewrite (DocumentRoot:/var/www/html, faili iṣeto: /etc/httpd/conf/httpd.conf).

Ni ibere fun Apache lati lo modulu yii, ṣafikun laini atẹle si faili iṣeto:

RewriteEngine on

O ṣe pataki lati ṣe akiyesi pe iṣeto yii kii yoo jogun nipasẹ awọn ọmọ ogun foju ni apoti kanna.

Bayi, iwọ yoo nilo lati ṣafikun RewriteEngine lori fun olugbalejo foju kọọkan nibi ti o fẹ lo awọn ofin atunkọ.

Ìdarí àtúnṣe inú ni àpẹẹrẹ tí ó rọrùn jùlọ ti mod_rewrite. Ti o ba fẹ ṣe atunṣe gbogbo awọn ibeere fun default.aspx si index.html, ṣafikun laini atẹle (eyiti a tun mọ ni ofin atunkọ) labẹ RewriteEngine lori:

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

ki o maṣe gbagbe lati tun Apache tun bẹrẹ ni ibere fun awọn ayipada lati ni ipa.

Eyi le wa ni ọwọ ti o ba jẹ pe a ṣe apẹrẹ aaye rẹ ni akọkọ lilo ASP ati lẹhinna yipada si HTML5 pẹtẹlẹ. Awọn ẹrọ wiwa yoo ni faili ti a ṣe itọka .aspx ṣugbọn faili yẹn ko si tẹlẹ.

Ni ọran naa, iwọ yoo nilo lati wa ọna lati ṣe atunṣe ibeere naa ki awọn alejo ti o nireti ma ṣe ṣiṣe si oju-iwe aṣiṣe kan. Lati ṣe idanwo, jẹ ki a ṣẹda faili HTML ti o rọrun ti a npè ni index.html inu/var/www/html pẹlu awọn akoonu wọnyi:

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

Awọn ami abojuto ati dola yoo fa ikosile deede lati ba eyikeyi okun bẹrẹ pẹlu /aiyipada ati ipari pẹlu .aspx , lẹsẹsẹ.

Bayi ṣe ifilọlẹ aṣawakiri rẹ ki o tọka si 192.168.0.100/default.aspx. Ti awọn nkan ba lọ bi o ti ṣe yẹ, Apache yẹ ki o sin index.html dipo.
Sibẹsibẹ, olumulo ti o pari yoo tun rii

Ti o ba fẹ URL ni aaye adirẹsi lati fihan pe olupin n ṣiṣẹ gangan fun index.html dipo oju-iwe ti a npè ni default.aspx , ṣafikun [R, L] si opin ofin atunkọ bii atẹle:

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

Nibi [R, L] jẹ awọn asia aṣayan meji ti o tọka pe itọsọna HTTP pipe kan yẹ ki o gbekalẹ si ẹrọ lilọ kiri ayelujara (R) ati pe ko si awọn ofin siwaju sii ti o yẹ ki o ṣiṣẹ:

Akiyesi bi ọpa adirẹsi ṣe fihan bayi index.html , bi o ti ṣe yẹ, dipo default.aspx bi o ti ṣe tẹlẹ.

Ninu àpilẹkọ yii a ṣalaye bi o ṣe le lo mod_rewrite lati ṣe atunṣe itọsọna inu. Duro si aifwy fun ifiweranṣẹ ti n bọ nibiti a yoo kọ bi a ṣe le ṣe atunṣe si orisun kan ti o ti gbe si olupin miiran, ati bii o ṣe le tun kọ awọn asia.

Gẹgẹbi igbagbogbo, ni ọfẹ lati lo fọọmu asọye ni isalẹ ti o ba ni ibeere eyikeyi tabi esi nipa nkan yii. A n reti lati gbọ lati ọdọ rẹ!