Kuinka suorittaa sisäinen uudelleenohjaus mod_rewrite-komennolla Apachessa
Tässä ja seuraavassa artikkelissa selitämme, kuinka mod_rewrite-toimintoa käytetään tiettyjen HTTP-pyyntöjen yhdistämiseen verkkosivuston muille sivuille tai ulkoiseen URL-osoitteeseen.
Toisin sanoen tämän tunnetun Apache-moduulin avulla voit uudelleenohjata URL-osoitteen toiseen, mitä havainnollistamme käytännön esimerkein.
Suositeltu luku: 5 vinkkiä Apache-verkkopalvelimesi suorituskyvyn parantamiseen
HUOMAA: Alla olevissa esimerkeissä oletetaan, että olet ainakin jossain määrin perehtynyt Perl-yhteensopiviin säännöllisiin lausekkeisiin (PCRE). Koska tämä aihe ei kuulu tämän artikkelin piiriin, katso lisätietoja PCRE:stä Perl 5 -version 24.0 asiakirjoista.
Ennen kuin jatkat, varmista, että uudelleenkirjoitusmoduuli on ladattu. Vaikka tämä on oletuskäyttäytyminen CentOS:ssä ja vastaavissa jakeluissa, Debianissa ja johdannaisissa sinun on ladattava se manuaalisesti seuraavasti:
a2enmod rewrite
Apachen määrittäminen käyttämään mod_rewrite-moduulia
Selvitetään yksinkertaisuuden vuoksi CentOS 7 -ruudun (IP 192.168.0.100) oletussivustoa mod_rewrite- ( DocumentRoot: /var/www/html, asetustiedosto: /etc/httpd/conf/httpd.conf).
Jotta Apache voi käyttää tätä moduulia, lisää seuraava rivi määritystiedostoon:
RewriteEngine on
On tärkeää huomata, että samassa laatikossa olevat virtuaaliset isännät eivät peri tätä kokoonpanoa.
Siksi sinun on lisättävä RewriteEngine jokaiselle virtuaaliselle isännälle, jossa haluat käyttää uudelleenkirjoitussääntöjä.
Sisäinen uudelleenohjaus: URL-osoitteen yhdistäminen toiseen samassa virtuaalipalvelimessa
Sisäinen uudelleenohjaus on yksinkertaisin esimerkki mod_rewrite-funktiosta. Jos haluat ohjata kaikki default.aspx-pyynnöt osoitteeseen index.html, lisää seuraava rivi (tunnetaan myös uudelleenkirjoitussääntönä) kohtaan RewriteEngine. > päällä:
RewriteRule "^/default\.aspx$" "/index.html"
ja älä unohda käynnistää Apache uudelleen, jotta muutokset tulevat voimaan.
Tästä voi olla hyötyä, jos sivustosi suunniteltiin alun perin ASP:llä ja muutettiin myöhemmin tavalliseksi HTML5ksi. Hakukoneet indeksoivat .aspx
-tiedoston, mutta tiedostoa ei ole enää olemassa.
Siinä tapauksessa sinun on löydettävä tapa ohjata pyyntö uudelleen, jotta mahdolliset vierailijasi eivät joudu virhesivulle. Testaamista varten luodaan yksinkertainen HTML-tiedosto nimeltä index.html
hakemistoon /var/www/html, jossa on seuraava sisältö:
<!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- ja dollari-merkit saavat säännöllisen lausekkeen vastaamaan mitä tahansa merkkijonoa, joka alkaa /default
ja päättyy .aspx
> vastaavasti.
Suositeltu luku: Asenna Mod_Pagespeed nopeuttaaksesi Apachen suorituskykyä jopa 10x
Käynnistä nyt selain ja osoita se osoitteeseen 192.168.0.100/default.aspx. Jos asiat menevät odotetusti, Apachen pitäisi näyttää sen sijaan index.html
.
Loppukäyttäjä näkee kuitenkin edelleen default.aspx
osoiterivillä, mikä tekee muutoksista täysin läpinäkyvän:
Jos haluat osoitepalkin URL-osoitteen osoittavan, että palvelin todella palvelee index.html
-osoitetta default.aspx
-nimisen sivun sijaan, lisää [R, L]
uudelleenkirjoitussäännön loppuun seuraavasti:
RewriteRule "^/default\.aspx$" "/index.html" [R,L]
Tässä [R,L]
on kaksi valinnaista lippua, jotka osoittavat, että täydellinen HTTP-uudelleenohjaus tulee lähettää selaimeen (R)
ja ettei muita sääntöjä tule käsitellä:
Huomaa, että osoitepalkissa näkyy nyt odotetusti index.html
default.aspx
:n sijaan, kuten aiemmin.
Yhteenveto
Tässä artikkelissa selitimme, kuinka mod_rewrite-komentoa käytetään sisäisen uudelleenohjauksen suorittamiseen. Pysy kuulolla seuraavaa viestiä varten, jossa opimme ohjaamaan resurssiin, joka on siirretty toiselle palvelimelle, ja kuinka näyttää mukautettua sisältöä käyttäjän selaimen perusteella. Siihen asti katso Apache 2.4 -dokumenteista täydellinen luettelo käytettävissä olevista uudelleenkirjoituslippuista.
Kuten aina, voit käyttää alla olevaa kommenttilomaketta, jos sinulla on kysyttävää tai palautetta tästä artikkelista. Me odotamme yhteydenottoasi!