ວິທີການປະຕິບັດການປ່ຽນເສັ້ນທາງພາຍໃນດ້ວຍ mod_rewrite ໃນ Apache
ໃນບົດຂຽນນີ້ແລະໃນບົດຕໍ່ໄປພວກເຮົາຈະອະທິບາຍວິທີການໃຊ້ mod_rewrite, ເພື່ອວາງແຜນການຮ້ອງຂໍ HTTP ທີ່ແນ່ນອນໄປຫາ ໜ້າ ອື່ນໆໃນເວບໄຊທ໌, ຫລື URL ພາຍນອກ.
ເວົ້າອີກຢ່າງ ໜຶ່ງ, ໂມດູນ Apache ທີ່ມີຊື່ສຽງນີ້ຈະຊ່ວຍໃຫ້ທ່ານສາມາດໂອນ URL ໄປຫາອີກອັນ ໜຶ່ງ, ເຊິ່ງພວກເຮົາຈະສະແດງໃຫ້ເຫັນຜ່ານຕົວຢ່າງພາກປະຕິບັດ.
ໝາຍ ເຫດ: ຕົວຢ່າງຂ້າງລຸ່ມນີ້ສົມມຸດວ່າທ່ານຢ່າງ ໜ້ອຍ ມີຄວາມຄຸ້ນເຄີຍກັບການສະແດງອອກແບບປົກກະຕິຂອງ Perl (PCRE). ເນື່ອງຈາກຫົວຂໍ້ນັ້ນບໍ່ຢູ່ໃນຂອບເຂດຂອງບົດຂຽນນີ້, ອ້າງອີງໃສ່ເອກະສານ Perl 5 ລຸ້ນ 24.0 ສຳ ລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບ PCRE.
ກ່ອນທີ່ຈະດໍາເນີນການ, ໃຫ້ແນ່ໃຈວ່າໂມດູນການຂຽນຄືນໃຫມ່ຖືກໂຫລດແລ້ວ. ເຖິງແມ່ນວ່ານີ້ແມ່ນພຶດຕິ ກຳ ເລີ່ມຕົ້ນໃນ CentOS ແລະການແຈກຢາຍທີ່ຄ້າຍຄືກັນ, ໃນ Debian ແລະອະນຸພັນທ່ານຈະຕ້ອງໂຫຼດມັນດ້ວຍຕົນເອງດັ່ງຕໍ່ໄປນີ້:
# a2enmod rewrite
ການຕັ້ງຄ່າ Apache ໃຫ້ໃຊ້ Mod_rewrite Module
ເພື່ອຄວາມລຽບງ່າຍ, ໃຫ້ໃຊ້ເວບໄຊທ໌ເລີ່ມຕົ້ນໃນຊ່ອງ CentOS 7 (IP 192.168.0.100) ເພື່ອອະທິບາຍວິທີການໃຊ້ mod_rewrite (DocumentRoot:/var/www/html, ເອກະສານການຕັ້ງຄ່າ: /etc/httpd/conf/httpd.conf).
ເພື່ອໃຫ້ Apache ໃຊ້ໂມດູນນີ້, ເພີ່ມສາຍຕໍ່ໄປນີ້ໃນເອກະສານການຕັ້ງຄ່າ:
RewriteEngine on
ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າການຕັ້ງຄ່ານີ້ຈະບໍ່ໄດ້ຮັບການສືບທອດໂດຍເຈົ້າຂອງເສມືນໃນຫ້ອງດຽວກັນ.
ດັ່ງນັ້ນ, ທ່ານຈະຕ້ອງເພີ່ມ RewriteEngine ສຳ ລັບເຈົ້າພາບເສມືນແຕ່ລະບ່ອນທີ່ທ່ານຕ້ອງການໃຊ້ກົດລະບຽບການຂຽນ ໃໝ່.
ການປ່ຽນເສັ້ນທາງພາຍໃນແມ່ນຕົວຢ່າງທີ່ງ່າຍດາຍທີ່ສຸດຂອງ mod_rewrite. ຖ້າທ່ານຕ້ອງການປ່ຽນເສັ້ນທາງການຮ້ອງຂໍທັງ ໝົດ ສຳ ລັບ default.aspx ຫາ index.html, ເພີ່ມສາຍຕໍ່ໄປນີ້ (ຍັງເອີ້ນວ່າກົດລະບຽບການຂຽນ ໃໝ່) ພາຍໃຕ້ RewriteEngine on:
RewriteRule "^/default\.aspx$" "/index.html"
ແລະຢ່າລືມທີ່ຈະເລີ້ມ Apache ໃໝ່ ເພື່ອໃຫ້ການປ່ຽນແປງມີຜົນ.
ສິ່ງນີ້ອາດຈະ ນຳ ໃຊ້ໄດ້ງ່າຍຖ້າເວັບໄຊທ໌ຂອງທ່ານຖືກອອກແບບມາໂດຍໃຊ້ ASP ແລະຕໍ່ມາກໍ່ປ່ຽນເປັນ HTML5 ທຳ ມະດາ. ເຄື່ອງຈັກຊອກຫາຈະມີເອກະສານດັດສະນີ .aspx
ແຕ່ວ່າເອກະສານນັ້ນບໍ່ມີອີກຕໍ່ໄປ.
ໃນກໍລະນີດັ່ງກ່າວ, ທ່ານ ຈຳ ເປັນຕ້ອງຊອກຫາວິທີທີ່ຈະປ່ຽນເສັ້ນທາງການຮ້ອງຂໍເພື່ອວ່ານັກທ່ອງທ່ຽວທີ່ຄາດຫວັງຂອງທ່ານຈະບໍ່ເຂົ້າໄປໃນ ໜ້າ ທີ່ຜິດພາດ. ເພື່ອທົດສອບ, ໃຫ້ສ້າງເອກະສານ HTML ງ່າຍໆທີ່ມີຊື່ວ່າ index.html
ພາຍໃນ/var/www/html ດ້ວຍເນື້ອໃນຕໍ່ໄປນີ້:
<!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>
ເຄື່ອງ ໝາຍ ລະຫັດແລະເງີນໂດລາຈະເຮັດໃຫ້ ຄຳ ເວົ້າປົກກະຕິກົງກັບລະຫັດເລີ່ມຕົ້ນດ້ວຍ /default
ແລະສິ້ນສຸດດ້ວຍ .aspx
ຕາມ ລຳ ດັບ.
ຕອນນີ້ເປີດຕົວທ່ອງເວັບຂອງທ່ານແລະຊີ້ໄປທີ່ 192.168.0.100/default.aspx. ຖ້າສິ່ງທີ່ປະຕິບັດໄດ້ຕາມຄາດ ໝາຍ, Apache ຄວນໃຫ້ບໍລິການ index.html
ແທນ.
ເຖິງຢ່າງໃດກໍ່ຕາມ, ຜູ້ໃຊ້ສຸດທ້າຍຈະຍັງຄົງເຫັນ default.aspx
ຢູ່ແຖບທີ່ຢູ່ເຊິ່ງເຮັດໃຫ້ການປ່ຽນແປງມີຄວາມໂປ່ງໃສທັງ ໝົດ:
ຖ້າທ່ານຕ້ອງການໃຫ້ URL ທີ່ຢູ່ໃນແຖບທີ່ຢູ່ສະແດງໃຫ້ເຫັນວ່າເຊີຟເວີມັນ ກຳ ລັງໃຫ້ບໍລິການ index.html
ແທນ ໜ້າ ທີ່ມີຊື່ວ່າ default.aspx
, ເພີ່ມ [R, L]
ຮອດທ້າຍຂອງກົດລະບຽບການຂຽນ ໃໝ່ ດັ່ງຕໍ່ໄປນີ້:
RewriteRule "^/default\.aspx$" "/index.html" [R,L]
ທີ່ນີ້ [R, L]
ແມ່ນສອງທຸງທາງເລືອກທີ່ຊີ້ບອກວ່າຕ້ອງມີການປ່ຽນເສັ້ນທາງ HTTP ທີ່ສົມບູນແບບໃຫ້ກັບຕົວທ່ອງເວັບ (R)
ແລະວ່າບໍ່ຄວນມີການປະມວນຜົນຕໍ່ໄປອີກ:
ໃຫ້ສັງເກດວິທີທີ່ແຖບທີ່ຢູ່ປະຈຸບັນສະແດງ index.html
, ຕາມທີ່ຄາດໄວ້, ແທນທີ່ຈະເປັນ default.aspx
ຄືກັບທີ່ມັນໄດ້ເຮັດກ່ອນ ໜ້າ ນີ້.
ໃນບົດຂຽນນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການໃຊ້ mod_rewrite ເພື່ອ ດຳ ເນີນການປ່ຽນເສັ້ນທາງພາຍໃນ. ຕິດຕາມການໄປສະນີຕໍ່ໄປບ່ອນທີ່ພວກເຮົາຈະຮຽນຮູ້ວິທີການປ່ຽນເສັ້ນທາງໄປຫາແຫລ່ງຂໍ້ມູນທີ່ຖືກຍ້າຍໄປທີ່ server ທີ່ແຕກຕ່າງກັນ, ແລະວິທີການຂຽນ ໃໝ່ ທຸງ.
ໃນຖານະເປັນສະເຫມີ, ຮູ້ສຶກບໍ່ເສຍຄ່າທີ່ຈະໃຊ້ແບບຟອມຄໍາເຫັນຂ້າງລຸ່ມນີ້ຖ້າທ່ານມີຄໍາຖາມຫຼືຄໍາຕິຊົມໃດໆກ່ຽວກັບບົດຄວາມນີ້. ພວກເຮົາຫວັງວ່າຈະໄດ້ຍິນຂ່າວຈາກທ່ານ!