วิธีทำให้ Apache ปรับเปลี่ยนเว็บไซต์สถิติโดยอัตโนมัติ ได้อย่างง่ายดาย

เมื่อดูแลเว็บไซต์ที่ประกอบด้วยหน้า HTML สถิติอย่างเดียว ความท้าทายที่พบเจอเป็นประจำคือวิธีการรวมการเปลี่ยนแปลงหรือสคริปต์ภายนอกที่อาจจำเป็นต่อฟังก์ชันการทำงานแบบไดนามิก ตัวอย่างเช่น เครื่องมือวิเคราะห์เว็บเช่น Woopra ต้องการให้รวมโค้ด JavaScript ลงในทุกหน้า ซึ่งอาจเป็นเรื่องยุ่งยากเมื่อจัดการกับไฟล์สถิติหลายไฟล์

ในบล็อกโพสต์นี้ เราจะสำรวจวิธีการรวมองค์ประกอบที่มีพลศาสตร์เข้ากับเว็บไซต์ HTML สถิติ โดยใช้ความสามารถของ Apache

ความท้าทาย

คุณอาจพบว่าตนเองอยู่ในสถานการณ์ที่:

  • คุณมีหน้า HTML สถิติอย่างเดียว
  • คุณต้องการรวมโค้ด JavaScript เพื่อติดตามการวิเคราะห์เว็บ
  • การเพิ่มโค้ดนี้ลงในแต่ละไฟล์เป็นเรื่องที่ไม่เหมาะสม

ความคิดเริ่มต้นอาจมุ่งไปที่การใช้การรวมของฝ่ายเซิร์ฟเวอร์ของ Apache (SSI) ร่วมกับการปรับเปลี่ยน (rewrites) เพื่อทำให้กระบวนการอัตโนมัติ อย่างไรก็ตาม ตามที่หลายคนค้นพบ วิธีการนี้มักจะไม่เพียงพอ

ตัวอย่างการพยายามหาทางแก้ไข

นี่คือภาพรวมที่เรียบง่ายของการพยายามครั้งแรกของคุณ:

  1. คุณได้ตั้งค่า mod_rewrite ในการกำหนดค่าของ Apache ของคุณเพื่อจับคำขอสำหรับหน้า HTML สถิติ

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !=test.shtml
    RewriteCond %{IS_SUBREQ} false 
    RewriteRule (.*)\.html test.shtml?$1.html
    
  2. คุณสร้างไฟล์ที่ชื่อว่า 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 หรือเนื้อหาที่มีพลศาสตร์ได้อย่างราบรื่น

ขั้นตอนในการดำเนินการแก้ไข

  1. เปิดใช้งานโมดูลของ Apache ที่จำเป็น: ตรวจสอบว่าโมดูล mod_filter_ext ถูกเปิดใช้งานในการกำหนดค่าของ Apache ของคุณ โมดูลนี้ช่วยให้คุณกำหนดโปรแกรมกรองภายนอกที่ประมวลผลประเภทไฟล์เฉพาะ

  2. สร้างสคริปต์ภายนอก: เขียนสคริปต์ Perl สั้น ๆ ที่จะฉีดโค้ด JavaScript ลงในหน้า HTML ของคุณ นี่คือโครงสร้างพื้นฐาน:

    while (<>) {
        s/<html>/\Q<script>....\E/;
        print $_;
    }
    
    • สคริปต์นี้จะอ่านไฟล์ HTML ที่เข้ามาและแทนที่ตัวแทนด้วยโค้ด JavaScript ของคุณ
  3. กำหนดค่า Apache เพื่อใช้สคริปต์: อัปเดตไฟล์การกำหนดค่าของ Apache เพื่อจดทะเบียนสคริปต์สำหรับไฟล์ HTML คุณอาจเพิ่มสิ่งที่คล้ายกับ:

    SetOutputFilter EXT_FILTER
    FilterDeclare EXT_FILTER
    FilterProvider EXT_FILTER pulse html
    FilterChain EXT_FILTER Perl-script-name
    
  4. ทดสอบการกำหนดค่าของคุณ: หลังจากที่คุณได้ตั้งค่าฟิลเตอร์แล้ว ให้เข้าไปที่หน้า HTML สถิติโดยตรงหนึ่งหน้า โค้ด JS ควรจะถูกรวมแบบไดนามิกในผลลัพธ์แล้ว

เครื่องมือเพิ่มเติม

  • นอกจากนี้ คุณยังสามารถใช้เครื่องมือในบรรทัดคำสั่งเช่น sed เพื่อทำการแทนที่ในลักษณะเดียวกัน แม้ว่าอาจมีความยืดหยุ่นของสคริปต์ Perl ที่จะให้การควบคุมที่มากกว่าในระยะยาว

สรุป

การรวมองค์ประกอบที่มีพลศาสตร์เข้ากับหน้า HTML สถิติอาจเป็นเรื่องยุ่งยาก แต่ด้วยการใช้โมดูลของ Apache และสคริปต์ภายนอกอย่างถูกต้อง คุณสามารถทำได้อย่างมีประสิทธิภาพ ไม่ว่าคุณจะเลือกใช้ mod_filter_ext หรือวิธีการอื่น เป้าหมายก็ยังคงเหมือนเดิม: ทำให้การทำงานของคุณมีประสิทธิภาพในขณะที่รักษาฟังก์ชันการทำงานของเว็บไซต์

หากคุณมีคำถามหรือเจอปัญหาในการดำเนินการแก้ไขนี้ อย่าลังเลที่จะติดต่อมา!