วิธีทำให้ Apache ปรับเปลี่ยนเว็บไซต์สถิติโดยอัตโนมัติ
ได้อย่างง่ายดาย
เมื่อดูแลเว็บไซต์ที่ประกอบด้วยหน้า HTML สถิติอย่างเดียว ความท้าทายที่พบเจอเป็นประจำคือวิธีการรวมการเปลี่ยนแปลงหรือสคริปต์ภายนอกที่อาจจำเป็นต่อฟังก์ชันการทำงานแบบไดนามิก ตัวอย่างเช่น เครื่องมือวิเคราะห์เว็บเช่น Woopra ต้องการให้รวมโค้ด JavaScript ลงในทุกหน้า ซึ่งอาจเป็นเรื่องยุ่งยากเมื่อจัดการกับไฟล์สถิติหลายไฟล์
ในบล็อกโพสต์นี้ เราจะสำรวจวิธีการรวมองค์ประกอบที่มีพลศาสตร์เข้ากับเว็บไซต์ HTML สถิติ โดยใช้ความสามารถของ Apache
ความท้าทาย
คุณอาจพบว่าตนเองอยู่ในสถานการณ์ที่:
- คุณมีหน้า HTML สถิติอย่างเดียว
- คุณต้องการรวมโค้ด JavaScript เพื่อติดตามการวิเคราะห์เว็บ
- การเพิ่มโค้ดนี้ลงในแต่ละไฟล์เป็นเรื่องที่ไม่เหมาะสม
ความคิดเริ่มต้นอาจมุ่งไปที่การใช้การรวมของฝ่ายเซิร์ฟเวอร์ของ Apache (SSI) ร่วมกับการปรับเปลี่ยน (rewrites) เพื่อทำให้กระบวนการอัตโนมัติ อย่างไรก็ตาม ตามที่หลายคนค้นพบ วิธีการนี้มักจะไม่เพียงพอ
ตัวอย่างการพยายามหาทางแก้ไข
นี่คือภาพรวมที่เรียบง่ายของการพยายามครั้งแรกของคุณ:
-
คุณได้ตั้งค่า
mod_rewrite
ในการกำหนดค่าของ Apache ของคุณเพื่อจับคำขอสำหรับหน้า HTML สถิติRewriteEngine On RewriteCond %{REQUEST_URI} !=test.shtml RewriteCond %{IS_SUBREQ} false RewriteRule (.*)\.html test.shtml?$1.html
-
คุณสร้างไฟล์ที่ชื่อว่า
test.shtml
ที่ควรจะรวม JavaScript ที่จำเป็นและเนื้อหา HTML ดั้งเดิม<script type="text/javascript"> var XXXXid = 'xxxxxxx'; </script> <script src="http://xxxx.woopra.com/xx/xxx.js"></script> <!--#set var="page" value="$QUERY_STRING" --> <!--#include virtual="$page" -->
แต่คุณพบปัญหาที่ทำให้ไม่สามารถบรรลุผลตามที่ต้องการ
วิธีแก้ไข
เพื่อปรับเปลี่ยนไฟล์สถิติโดยอัตโนมัติอย่างมีประสิทธิภาพ วิธีการทางเลือกคือการใช้ mod_filter_ext
โมดูลนี้ช่วยให้สามารถประมวลผลไฟล์ผ่านสคริปต์ภายนอก ช่วยให้คุณสามารถแทรก JavaScript หรือเนื้อหาที่มีพลศาสตร์ได้อย่างราบรื่น
ขั้นตอนในการดำเนินการแก้ไข
-
เปิดใช้งานโมดูลของ Apache ที่จำเป็น: ตรวจสอบว่าโมดูล
mod_filter_ext
ถูกเปิดใช้งานในการกำหนดค่าของ Apache ของคุณ โมดูลนี้ช่วยให้คุณกำหนดโปรแกรมกรองภายนอกที่ประมวลผลประเภทไฟล์เฉพาะ -
สร้างสคริปต์ภายนอก: เขียนสคริปต์ Perl สั้น ๆ ที่จะฉีดโค้ด JavaScript ลงในหน้า HTML ของคุณ นี่คือโครงสร้างพื้นฐาน:
while (<>) { s/<html>/\Q<script>....\E/; print $_; }
- สคริปต์นี้จะอ่านไฟล์ HTML ที่เข้ามาและแทนที่ตัวแทนด้วยโค้ด JavaScript ของคุณ
-
กำหนดค่า Apache เพื่อใช้สคริปต์: อัปเดตไฟล์การกำหนดค่าของ Apache เพื่อจดทะเบียนสคริปต์สำหรับไฟล์ HTML คุณอาจเพิ่มสิ่งที่คล้ายกับ:
SetOutputFilter EXT_FILTER FilterDeclare EXT_FILTER FilterProvider EXT_FILTER pulse html FilterChain EXT_FILTER Perl-script-name
-
ทดสอบการกำหนดค่าของคุณ: หลังจากที่คุณได้ตั้งค่าฟิลเตอร์แล้ว ให้เข้าไปที่หน้า HTML สถิติโดยตรงหนึ่งหน้า โค้ด JS ควรจะถูกรวมแบบไดนามิกในผลลัพธ์แล้ว
เครื่องมือเพิ่มเติม
- นอกจากนี้ คุณยังสามารถใช้เครื่องมือในบรรทัดคำสั่งเช่น
sed
เพื่อทำการแทนที่ในลักษณะเดียวกัน แม้ว่าอาจมีความยืดหยุ่นของสคริปต์ Perl ที่จะให้การควบคุมที่มากกว่าในระยะยาว
สรุป
การรวมองค์ประกอบที่มีพลศาสตร์เข้ากับหน้า HTML สถิติอาจเป็นเรื่องยุ่งยาก แต่ด้วยการใช้โมดูลของ Apache และสคริปต์ภายนอกอย่างถูกต้อง คุณสามารถทำได้อย่างมีประสิทธิภาพ ไม่ว่าคุณจะเลือกใช้ mod_filter_ext
หรือวิธีการอื่น เป้าหมายก็ยังคงเหมือนเดิม: ทำให้การทำงานของคุณมีประสิทธิภาพในขณะที่รักษาฟังก์ชันการทำงานของเว็บไซต์
หากคุณมีคำถามหรือเจอปัญหาในการดำเนินการแก้ไขนี้ อย่าลังเลที่จะติดต่อมา!