RewriteEngine เปิดอยู่
RewriteRule ^192.168.20.87$ ไม่มีอะไร
ด้วยเหตุผลบางอย่าง ถ้าฉันใช้ .htaccess ก็ใช้งานได้
แม้ว่าสิ่งนี้จะไม่ตรงกับ URL http://192.168.20.87/page.php แม้ว่าคุณ "ทำด้วย .htaccess"ดังนั้นคุณต้องเป็น ทำอย่างอื่น?
กฎข้างต้น (เมื่อใช้ใน <Directory> คอนเทนเนอร์) ตรงกับ URL ของแบบฟอร์ม http://192.168.20.87/192.168.20.87 (หรือ http://default.nothing/192.168.20.87 - หากชื่อโฮสต์ของคุณแก้ไข)
เดอะ เขียนกฎใหม่ ลวดลาย ตรงกับเส้นทาง URL เท่านั้น ไม่ใช่ชื่อโฮสต์ (เช่น 192.168.20.87). ดังนั้นนัดนี้ต่อ /page.php, (หรือ page.php - เส้นทางสัมพัทธ์/ไม่มีเครื่องหมายทับ - เมื่อใช้ใน ไดเรกทอรี บริบทเช่น <Directory> หรือ .htaccess.)
ดังนั้นสิ่งนี้จะต้องเป็นดังนี้:
RewriteRule ^page\.php$ ไม่มีอะไร
(แม้ว่าจะไม่ชัดเจนว่าคุณกำลังพยายามทำอะไรที่นี่ แต่ "ไม่มีอะไร" คืออะไร หากคุณกำลังพยายามเรียกใช้ 404 นี่ไม่ใช่วิธีที่จะทำ)
ตามที่ @Gerrit กล่าวถึงอย่างหลวม ๆ ในความคิดเห็น เมื่อ เขียนกฎใหม่ คำสั่งใช้ใน เซิร์ฟเวอร์ หรือ โฮสต์เสมือน บริบท (เช่น ไม่อยู่ใน <Directory> หรือ .htaccess ตู้คอนเทนเนอร์ - ก ไดเรกทอรี บริบท) จากนั้นเส้นทาง URL ที่จับคู่โดย เขียนกฎใหม่ ไดเร็กทีฟเป็นค่าสัมพัทธ์ของรูท โดยขึ้นต้นด้วยเครื่องหมายทับ เนื่องจากไดเร็กทีฟได้รับการประมวลผลก่อนหน้านี้มาก ก่อนที่จะถูกแมปกับระบบไฟล์ เช่น. ^/หน้า\.php$.
อัปเดต:
DocumentRoot /var/www/html/public_html/00-default
<ไดเรกทอรี "/volume/dev/html/public_html/00-default">
ฉันเพิ่งสังเกตว่าคุณ DocumentRoot และ <Directory> คำสั่งกำลังอ้างอิงตำแหน่งระบบไฟล์ที่แตกต่างกันสองตำแหน่ง! ด้วยข้อมูลที่จำกัดในคำถามนี้ <Directory> คอนเทนเนอร์จะไม่ถูกประมวลผล
แต่ถ้าคุณไม่มีคำสั่งเพิ่มเติมจากที่อื่น (ซึ่งฉันคิดว่าคุณต้องมี) ก็ไม่มี .htaccess ไฟล์ที่วางอยู่ในรูทเอกสาร (ซึ่งฉันคิดว่าคุณกำลังวางไว้) จะไม่ถูกประมวลผลเช่นกัน