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
ไฟล์ที่วางอยู่ในรูทเอกสาร (ซึ่งฉันคิดว่าคุณกำลังวางไว้) จะไม่ถูกประมวลผลเช่นกัน