เหตุใดการเปิดใช้งานบันทึกการเขียนซ้ำใน. htaccess จึงไม่ทำงาน


9

ฉันต้องการเปิดใช้งานการบันทึกซ้ำเพื่อให้ฉันสามารถดีบักกฎการเขียนซ้ำ แต่การเพิ่มคำสั่ง RewriteLog ทำให้เกิดข้อผิดพลาด 500

ข้อมูลรุ่น:

Ubuntu 14.04

Server version: Apache/2.4.12 (Ubuntu)
Server built:   Feb  4 2015 14:22:06

เนื้อหาของ .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 5

RewriteBase /

RewriteRule ^/wordpress/wp-content/(.*)$ /wp-content/$1 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

ในบันทึกข้อผิดพลาดฉันเห็น:

/var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration

คำตอบ:


14

นอกเหนือจากการลืมว่าไม่สามารถกำหนดค่าการบันทึกใน.htaccessไฟล์ได้สิ่งนี้ก็กลายเป็นปัญหาของ Apache ด้วย คำสั่ง RewriteLog ถูกแทนที่ด้วยเวอร์ชันใหม่กว่าและเพิ่มสิ่งต่อไปนี้ในการกำหนดค่า Virtualhost เปิดใช้งานบันทึกการเขียนซ้ำสำหรับฉัน:

LogLevel alert rewrite:trace3 (can be increased to trace8)

จากคู่มือ:

ผู้ที่คุ้นเคยกับ mod_rewrite รุ่นก่อนหน้านี้อย่างไม่ต้องสงสัยจะมองหาคำสั่ง RewriteLog และ RewriteLogLevel ฟังก์ชั่นนี้ถูกแทนที่โดยสมบูรณ์ด้วยการกำหนดค่าการบันทึกต่อโมดูลใหม่ที่กล่าวถึงข้างต้น

หากต้องการกรองข้อความเหล่านี้ในบันทึกข้อผิดพลาดคุณสามารถทำสิ่งต่อไปนี้:

tail -f error_log|fgrep '[rewrite:'

แต่เดิมคำถามของคุณถูกแท็กด้วยapache-2.2ใช่ไหม และฉันอาจมองข้ามเวอร์ชันในคำถามนั้น เห็นดี
HBruijn

ในกรณีนี้จะช่วยได้ทุกคนปัญหาของฉันคือฉันเปิดใช้งานการบันทึกใน VHost สำหรับพอร์ต 80 แต่ไม่ใช่ 443 ฉันใช้ HTTPS ดังนั้นการบันทึกของฉันจึงไม่ทำงาน เอาฉันสักครู่เพื่อหาข้อผิดพลาดที่โง่เง่า :(
BrianVPS

ฉันต้องการเพิ่มว่าคุณต้องmod_log_debugเปิดใช้งาน ...
thoni56

4

ฉันไม่สามารถช่วยตัวเองซ้ำได้:

คนส่วนใหญ่ที่ใช้. htaccess และถามเกี่ยวกับมันใน ServerFault ไม่ควรใช้. htaccess ในตอนแรกเนื่องจากเป็นโซลูชันสำหรับผู้ใช้ปลายทางที่ไม่เคยมีไว้สำหรับผู้ดูแลระบบ:

คุณควรหลีกเลี่ยงการใช้ไฟล์. htaccess โดยสมบูรณ์หากคุณเข้าถึงไฟล์กำหนดค่าเซิร์ฟเวอร์หลัก httpd การใช้.htaccessไฟล์ทำให้เซิร์ฟเวอร์ Apache http ของคุณช้าลง คำสั่งใด ๆ ที่คุณสามารถรวมไว้ในไฟล์. htaccess นั้นจะถูกตั้งค่าให้ดีขึ้นในบล็อกไดเรกทอรี
ที่มา: คู่มือ Apache

เห็นได้ชัดว่าคนส่วนใหญ่ที่เผยแพร่การกำหนดค่าของพวกเขาดูเหมือนจะเป็นโปรแกรมเมอร์ลัทธิขนส่งสินค้ากระตือรือร้นที่จะคัดลอกไฟล์. htaccess สุ่มสี่สุ่มห้าโดยไม่เข้าใจเหตุผล

ปัญหาของคุณคือตัวอย่างสำคัญ: RewriteLogคำสั่งจะใช้ได้เฉพาะในบริบทของการกำหนดค่าเซิร์ฟเวอร์หรือโฮสต์เสมือน ...

นั่นหมายความว่าไม่อนุญาตใน.htaccessไฟล์!


4
การค้นหาบันทึกเป็นสิ่งที่คนที่ต้องการเรียนรู้ไม่ใช่คัดลอกจะทำ ดูเหมือนว่า Apache ได้ตั้งค่า catch-22 แบบคลาสสิกแล้ว: คุณควรใช้. htaccess หากคุณไม่สามารถเข้าถึงรูทเซิร์ฟเวอร์ แต่คุณสามารถเปิดการบันทึกได้หากคุณสามารถเข้าถึงเซิร์ฟเวอร์รูทได้ หากพวกเขาให้คุณทำการเขียนใหม่ทั้งหมดใน. htaccess พวกเขาควรให้คุณบันทึกสิ่งที่มันกำลังทำอยู่ดังนั้นคุณไม่ต้องพึ่งพาการคัดลอกและวาง / ทดลองและข้อผิดพลาดแบบสุ่ม
Mark Berry

5
แอพพลิเคชั่นบางตัวเช่น Wordpress สร้างไฟล์. htaccess ที่ต้องทำการดีบั๊ก นี่เป็นกรณีที่นี่ การบันทึกจากไฟล์. htaccess เป็นขั้นตอนแรกเมื่อคุณพยายามหานิพจน์ทั่วไปที่ไม่น่าเชื่อถือของผู้อื่น
KeithL
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.