ฉันได้พุชไฟล์. htaccess ของฉันไปยังเซิร์ฟเวอร์การผลิต แต่ไม่ทำงาน การรีสตาร์ทจะเป็นขั้นตอนถัดไปหรือฉันควรตรวจสอบอย่างอื่น
ฉันได้พุชไฟล์. htaccess ของฉันไปยังเซิร์ฟเวอร์การผลิต แต่ไม่ทำงาน การรีสตาร์ทจะเป็นขั้นตอนถัดไปหรือฉันควรตรวจสอบอย่างอื่น
คำตอบ:
ไม่จำเป็นต้องรีสตาร์ทสำหรับการเปลี่ยนแปลง. htaccess อย่างอื่นผิด
ตรวจสอบให้แน่ใจว่า. htaccess ของคุณมีคำสั่ง
RewriteEngine บน
ซึ่งจำเป็นแม้ว่าจะมีอยู่ใน httpd.conf ก็ตาม ตรวจสอบด้วยว่ากระบวนการ httpd สามารถอ่าน. htaccess ได้
ตรวจสอบ error_log ซึ่งจะแจ้งให้คุณทราบถึงข้อผิดพลาดใน. htaccess หากมีการใช้งาน การใส่ข้อผิดพลาดทางไวยากรณ์โดยเจตนาใน. htaccess เป็นการตรวจสอบที่ดีเพื่อให้แน่ใจว่ามีการใช้ไฟล์คุณควรได้รับข้อผิดพลาด 500 ในหน้าใดก็ได้ในไดเรกทอรีเดียวกัน
สุดท้ายคุณสามารถเปิดใช้งานบันทึกการเขียนซ้ำโดยใช้คำสั่งต่อไปนี้ใน httpd.conf ของคุณ:
RewriteLog "บันทึก / rewritelog"
RewriteLog ระดับ 7
ไฟล์บันทึกที่สร้างขึ้นจะให้รายละเอียดที่เต็มไปด้วยเลือดซึ่งกฎการเขียนซ้ำที่ตรงกันและวิธีการจัดการ
ไม่ :
Apache ช่วยให้สามารถจัดการการกำหนดค่าแบบกระจายอำนาจผ่านไฟล์พิเศษที่อยู่ในแผนผังเว็บ โดยปกติไฟล์พิเศษจะถูกเรียก
.htaccess
แต่ชื่อใดก็ได้ในคำสั่งAccessFileName ... เนื่องจากไฟล์. htaccess ถูกอ่านในทุกคำขอการเปลี่ยนแปลงที่เกิดขึ้นในไฟล์เหล่านี้จะมีผลทันที ...
จากเอกสารเกี่ยวกับ apache: โดยทั่วไปปัญหาคือ AllowOverride ไม่ได้ตั้งค่าเพื่อให้คำสั่งการกำหนดค่าของคุณได้รับเกียรติ ตรวจสอบให้แน่ใจว่าคุณไม่มี AllowOverride None สำหรับขอบเขตไฟล์ที่เป็นปัญหา การทดสอบที่ดีคือการใส่ขยะในไฟล์. htaccess และโหลดซ้ำ หากไม่ได้สร้างข้อผิดพลาดของเซิร์ฟเวอร์แสดงว่าคุณมี AllowOverride None อยู่เกือบแน่นอน
เฉพาะในกรณีที่คุณไม่ได้เพิ่มโมดูล mod_rewrite ลงใน Apache
คุณต้องรีสตาร์ท Apache ก็ต่อเมื่อคุณเปลี่ยนไฟล์ Apache ".conf"
ฉันมีปัญหาเดียวกันและดูเหมือนว่าโพสต์ PiedPiper เกี่ยวกับ AllowOverride จะมีประโยชน์มากที่สุด ตรวจสอบไฟล์ httpd.conf ของคุณสำหรับ "AllowOverride" และตรวจสอบว่าตั้งค่าเป็นทั้งหมด
ในกรณีที่. htaccess ไม่จำเป็นต้องรีสตาร์ทหากไม่ทำงานสาเหตุที่เป็นไปได้ ได้แก่
AllowOverrideไม่สามารถตั้งค่าที่ผู้ใช้สามารถตั้งค่าภายใน httpd.conf หรืออาจต้องติดต่อผู้ดูแลระบบเซิร์ฟเวอร์
ตรวจสอบชื่อไฟล์ของ .htaccess มันควรจะเป็น .htaccess ไม่ htaccess.txt ดูที่นี่สำหรับคำแนะนำวิธีการสร้างหนึ่ง
ลองใช้Options -Indexes
หรือdeny all
คำสั่งง่ายๆเพื่อดูว่าใช้งานได้หรือไม่
ล้างแคชของเบราว์เซอร์ทุกครั้งหากมีกฎสำหรับการเปลี่ยนเส้นทางหรือสิ่งที่คล้ายกันหากการเปลี่ยนเส้นทางก่อนหน้าถูกแคชไว้ดูเหมือนว่าสิ่งต่างๆไม่ทำงาน
มีอะไรอยู่ใน. htaccess ของคุณ RewriteRules? ตรวจสอบว่าได้ติดตั้งและเปิดใช้งาน mod_rewrite แล้ว
อย่างอื่น? ลองตั้งค่า AllowOverride เป็น 'all' บนไดเร็กทอรีนั้น
LogLevel alert rewrite:trace7
. หลังจากรีสตาร์ท apacheคุณจะเห็นร่องรอยใน error.log หวังว่าจะช่วยได้ http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging