การให้บริการไฟล์จากโฟลเดอร์ย่อยใน IIS6: โซลูชั่นที่ง่าย
เมื่อจัดการเว็บไซต์ที่มีหลายทีมมีส่วนร่วมในการสร้างเนื้อหา การรักษาความเป็นระเบียบเรียบร้อยอาจเป็นความท้าทาย โดยเฉพาะอย่างยิ่งเมื่อคุณทำงานกับเซิร์ฟเวอร์เก่า ๆ เช่น IIS 6 สถานการณ์ทั่วไปเกิดขึ้นเมื่อผู้พัฒนาต้องการรักษาการแยกที่ชัดเจนระหว่างรหัสการพัฒนาและเว็บไซต์ของธุรกิจในขณะที่ยังคงทำให้ผู้ใช้เข้าถึงได้ง่าย บล็อกโพสต์นี้จะพาคุณไปเรียนรู้วิธีการให้บริการหน้าเว็บจากโฟลเดอร์ย่อยโดยไม่ต้องเปลี่ยนแปลง URL!
ความท้าทาย
จินตนาการว่าคุณมีโครงสร้างเว็บไซต์ที่มีลักษณะเช่นนี้:
- Root: ประกอบด้วยหน้าและทรัพยากรสำหรับทีมพัฒนา
- Content: โฟลเดอร์ย่อยที่กำหนดไว้สำหรับทีมธุรกิจในการอัปโหลดหน้าเว็บง่าย ๆ
ปัญหาคือคุณต้องการให้ผู้ใช้สามารถเข้าถึงหน้าเว็บของทีมธุรกิจได้โดยตรงโดยไม่ต้องต่อ /Content
กับ URL ตัวอย่างเช่น:
- ผู้ใช้ต้องการไปที่:
www.oursite.com/popcorn.aspx
- แทนที่จะไปที่:
www.oursite.com/Content/popcorn.aspx
โซลูชั่น: การใช้การเขียนใหม่ URL
เพื่อให้บรรลุเป้าหมายนี้ คุณสามารถใช้ โมดูล ISAPI Rewrite ซึ่งมีอยู่ใน IIS 6 สิ่งนี้จะช่วยให้คุณสร้างกฎที่ชี้ให้การร้องขอไฟล์เฉพาะในโฟลเดอร์หลักไปยังไฟล์ที่เกี่ยวข้องในโฟลเดอร์ย่อย
นี่คือการแจกแจงขั้นตอน:
-
ติดตั้ง ISAPI Rewrite: หากคุณยังไม่ได้ทำ ให้แน่ใจว่าคุณได้ติดตั้งเครื่องมือ ISAPI Rewrite บนเซิร์ฟเวอร์ IIS 6 ของคุณแล้ว
-
สร้างกฎการเขียนใหม่: คุณจะต้องเพิ่มกฎในไฟล์การกำหนดค่าของคุณเพื่อสั่งให้เซิร์ฟเวอร์ของคุณมองหาในโฟลเดอร์ Content เมื่อมีการร้องขอไฟล์เฉพาะ นี่คือสิ่งที่ไวยากรณ์พื้นฐานมีลักษณะ:
RewriteCond %{REQUEST_FILENAME} -!f RewriteCond Content/%{REQUEST_FILENAME} -f RewriteRule (.*) Content/(.*)
เข้าใจโค้ด
- RewriteCond %{REQUEST_FILENAME} -!f: เงื่อนไขนี้เช็คว่าไฟล์ที่ร้องขอไม่มีในไดเรกทอรีหลัก
- RewriteCond Content/%{REQUEST_FILENAME} -f: เงื่อนไขนี้เช็คว่าไฟล์ที่ร้องขอมีอยู่จริงในโฟลเดอร์ Content
- RewriteRule (.) Content/(.): หากทั้งสองเงื่อนไขเป็นจริง กฎนี้จะเขียน URL ใหม่เพื่อดึงเนื้อหาจากโฟลเดอร์ Content
- การทดสอบ: หลังจากกำหนดค่ากฎข้างต้นแล้ว การทดสอบการตั้งค่าจึงเป็นสิ่งสำคัญ นำทางไปยังหน้าเว็บโดยตรงจากเบราว์เซอร์ของคุณราวกับว่ามันอยู่ในไดเรกทอรีหลัก ตัวอย่างเช่น ลองเข้าถึง
www.oursite.com/popcorn.aspx
และดูว่ามันให้บริการเนื้อหาจากwww.oursite.com/Content/popcorn.aspx
โดยไม่มีปัญหา
ประโยชน์ของวิธีการนี้
- ประสบการณ์ผู้ใช้ที่ราบรื่น: ผู้ใช้สามารถเข้าถึงหน้าเว็บของทีมธุรกิจได้โดยไม่จำเป็นต้องจดจำโครงสร้างโฟลเดอร์เฉพาะ
- ความชัดเจนในการจัดระเบียบ: นักพัฒนาและทีมธุรกิจสามารถทำงานได้อย่างอิสระโดยไม่รบกวนไฟล์ของกันและกัน
- บำรุงรักษาได้ง่ายขึ้น: การรักษาเนื้อหาให้เป็นระเบียบภายในโฟลเดอร์ย่อยทำให้การบำรุงรักษาและการอัปเดตทำได้ง่ายขึ้น
สรุป
การใช้ โมดูล ISAPI Rewrite ใน IIS 6 ช่วยให้คุณสามารถเปิดใช้งาน URL ที่เป็นมิตรกับผู้ใช้ในขณะที่รักษาโครงสร้างของไดเรกทอรีเนื้อหา ด้วยกฎการเขียนที่ง่ายที่ให้ไว้ข้างต้น คุณสามารถทำให้แน่ใจว่าเนื้อหาทั้งหมดเข้าถึงได้ง่ายโดยไม่ต้องสูญเสียความต้องการในการจัดระเบียบ
ขอให้คุณเขียนโค้ดอย่างมีความสุข และขอให้ URL ของคุณเป็นมิตรตลอดไป!