GORAGOD

Apache แจ้ง Error "no acceptable variant"

ปัญหานี้เกิดจากการเรียกไปยัง URL ที่ไม่มีนามสกุลของไฟล์และไม่พบไฟล์ที่เรียก เช่น เรียกไปยังไฟล์ /some/dir/index แต่ไม่พบไฟล์ index และ index ไม่ใช่ไดเร็คทอรี่ ทำให้ Apache ไม่รู้จะเอาไฟล์ไหนมาประมวลผล

วิธีการแก้ไข
ที่ถูกต้องคือให้หลีกเลี่ยงการเรียกไปยัง URL ดังกล่าว เพราะ Apache อาจมอง URL ดังกล่าวเป็นไฟล์หรือไดเร็คทอรี่ก็ได้ เช่น /some/dir/index (ไฟล์ index ในไดเรคทอรี่ /some/dir/) หรือ /some/dir/index/index.php หากมีไฟล์ index.php อยู่ในไดเร็คทอรี่ /some/dir/index/ (index เป็นไดเร็คทอรี่)

แต่หากจำเป็นต้องใช้งาน URL ลักษณะนี้สามารถเปิดใช้งาน MultiViews ของ Apache ได้ โดยให้ใส่คำสั่งนี้ลงในไฟล์ Apache config
<Files "*.php">
  MultiviewsMatch Any
</Files>

เมื่อมีการเปิดให้ใช้งาน MultiViews หากมีการ request มาที่ /some/dir/index Apache จะทำการค้นหา /some/dir/index.* (ไฟล์นามสกุลใดๆก็ได้) เพื่อนำไปประมวลผล ยกตัวอย่างเช่น ขอ /some/dir/index มา แต่มี index.txt อยู่และไม่มี index.php ก็จะเอา index.txt ไปทำงานเหมือนเป็น index.php แทน
การเปิดใช้งานตัวเลือกนี้ ถ้าไม่จำเป็นก็ไม่ควรเปิดใช้นะครับ เนื่องจากเป็นคำสั่งที่ค่อนข้างอันตรายเนื่องจาก Apache จะทำการประมวลผลไฟล์นามสกุลใดๆก็ได้ที่เจอ (เช่นไฟล์ text หรือ ไฟล์รูปภาพ) ซึ่งอาจเป็นสาเหตุให้ถูกโจมตีได้