mod_rewrite naudojamas URL perrašymui serverio lygmeniu, kad naudotojui būtų pateikiamas galutinio puslapio turinys.
Modulis dinamiškai apdoroja gaunamas URL užklausas pagal reguliariųjų išraiškų taisykles. Taip bet kokį URL galima susieti su vidine svetainės URL struktūra pagal savo poreikius.
Modulis palaiko neribotą taisyklių skaičių ir neribotą kiekvienai taisyklei priskirtų sąlygų skaičių, todėl URL valdymas yra itin lankstus. URL perrašymas gali priklausyti nuo įvairių sąlygų, įskaitant serverio ir aplinkos kintamuosius, HTTP antraštes, laiko žymas, išorinių duomenų bazių užklausas bei kitas išorines programas ar apdorojimo mechanizmus. Tai leidžia labai tiksliai nustatyti, kuriems URL turi būti taikomos konkrečios taisyklės.
Vienintelis reikalavimas: turite turėti naudotoją su sudo teisėmis, tinka ir root naudotojas, o jūsų VPS serveryje turi būti įdiegtas Apache.
1. Sistemos paketų sąrašo atnaujinimas ir paketų atnaujinimas
Pirmiausia atnaujinkite paketų sąrašą:
sudo apt update
Tada atnaujinkite įdiegtus paketus:
sudo apt upgrade
2. mod_rewrite įjungimas
Įjunkite mod_rewrite modulį:
sudo a2enmod rewrite
Rezultatas:
Jei sistema paprašys iš naujo paleisti Apache, vykdykite:
systemctl restart apache2
Dabar mod_rewrite modulis yra įjungtas ir paruoštas naudoti.
3. .htaccess taisyklių nustatymas
.htaccess failas leidžia keisti URL perrašymo taisykles neredaguojant pagrindinių serverio konfigūracijos failų. Dėl to tinkamas .htaccess konfigūravimas yra svarbus ir jūsų web aplikacijos saugumui.
Pagal numatytuosius nustatymus Apache neleidžia .htaccess failui keisti URL perrašymo taisyklių, todėl pirmiausia turime tai leisti serverio konfigūracijoje.
Atidarykite numatytąjį Apache konfigūracijos failą:
sudo nano /etc/apache2/sites-available/000-default.conf
Faile rasite bloką <VirtualHost *:80>, prasidedantį pirmoje eilutėje:
Į failą pridėkite šią konfigūraciją:
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted </Directory>
Rezultatas turėtų atrodyti taip:
Išsaugokite pakeitimus ir uždarykite failą.
Kad pakeitimai įsigaliotų, iš naujo paleiskite Apache:
sudo systemctl restart apache2
Dabar web šakniniame kataloge sukurkite .htaccess failą. Jei naudojate WordPress, Joomla ar panašią turinio valdymo sistemą, šis failas gali būti jau sukurtas:
sudo nano /var/www/html/.htaccess
Pridėkite šią eilutę:
RewriteEngine on
Failas turėtų atrodyti taip:
Viskas paruošta. Dabar galime pradėti naudoti URL perrašymo taisykles.
4. URL perrašymo konfigūravimas
Kad būtų aiškiau, panagrinėkime paprastą pavyzdį. Sukursime puslapį, kurį bus galima pasiekti adresu http://IP_of_your_server/example.html, o vėliau ir trumpesniu adresu http://IP_of_your_server/example.
Pirmiausia web šakniniame kataloge sukurkite failą example.html:
sudo nano /var/www/html/example.html
Į failą įrašykite šį HTML kodą, išsaugokite pakeitimus ir uždarykite failą:
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>Example</h1>
</body>
</html>
Failas turėtų atrodyti taip:
Šį puslapį galite pasiekti adresu http://IP_of_your_server/example.html. Tačiau trumpesnis adresas be .html plėtinio dar neveiks.
Visos RewriteRule taisyklės sudaromos pagal tą pačią struktūrą:
• RewriteRule nurodo naudojamą direktyvą.
• Pattern yra reguliarioji išraiška, pagal kurią tikrinama URL dalis, kurią naudotojas įveda naršyklėje.
• Substitution nurodo tikrąjį URL kelią, kitaip tariant, failo vietą Apache serveryje.
• Flags yra neprivalomi parametrai, leidžiantys pakeisti taisyklės veikimą.
Norėdami pritaikyti mod_rewrite taisykles, atidarykite .htaccess failą:
sudo nano /var/www/html/.htaccess
Po pirmąja eilute pridėkite šias taisykles:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
Rezultatas turėtų atrodyti taip:
Dabar naršyklėje turėtumėte galėti naudoti adresą http://IP_of_your_server/example.
5. Išvada
mod_rewrite yra lankstus Apache modulis, leidžiantis patogiai valdyti URL perrašymą ir kurti aiškesnius, žmonėms lengviau suprantamus URL adresus.
Jei norite daugiau sužinoti apie mod_rewrite, peržiūrėkite Apache mod_rewrite įvadą ir oficialią Apache mod_rewrite dokumentaciją.






