จะสะท้อนออกจาก. htaccess อย่างไร


13

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

มีวิธีที่ฉันสามารถเขียนมันลงไฟล์หรือไม่? หรือมีฟังก์ชั่น echo / print บ้าง?

ฉันจะรู้ได้อย่างไรว่า $ 1 $ 2 $ 3 คืออะไร

คำตอบ:


8

คุณสามารถลองวิธีที่กล่าวถึงในโพสต์บล็อกชื่อ A Couple Ways to Debug mod_rewrite :


โดยพื้นฐานแล้วสิ่งที่คุณทำคือการถ่ายโอนข้อมูลบางส่วนที่ mod_rewrite กำลังใช้งานกลับเข้าไปในส่วนหัวจากนั้นใช้ส่วนขยาย Firebug หรือ LiveHTTP Headers ใน Firefox เพื่อดูส่วนหัวและอ่านข้อมูลการซ่อมแซมของคุณ

ใน. htaccess ให้ใช้เงื่อนไขและกฎ:

RewriteCond %{QUERY_STRING} !vardump
RewriteRule (.*) http://www.example.com/$1?vardump&thereq=%{THE_REQUEST}&reqhost=%{HTTP_HOST} [R=301,L,QSA]

ฉันขอแนะนำให้ทำการเปลี่ยนเส้นทาง 302 เพื่อหลีกเลี่ยงปัญหาแคช 301 ผลลัพธ์ในเบราว์เซอร์หลังจากเสร็จสิ้นการทดสอบ
IPSUS

9

ลองเหล่านี้:

RewriteLog "/myfolder/mylogfile.log" 
RewriteLogLevel 3

เหล่านี้เป็นเพียงนิพจน์ปกติที่มีการเพิ่มเติมดังนั้นคุณสามารถใช้Regex Coachสำหรับการทดสอบเบื้องต้นกับ URL หรือเครื่องมือการดีบัก Regex อื่น ๆ

ไชโย! :)


เครื่องมือที่มีประโยชน์มาก แต่อย่าลืมลบมันหลังจากดีบั๊กเพราะคุณจะได้รับไฟล์บันทึกขนาดใหญ่!
Coops

6
เห็นได้ชัดว่าสิ่งนี้ไม่ทำงานใน.htaccessไฟล์ มันต้องไปhttpd.confซึ่งหมายความว่าจะไม่สามารถทำได้ในบัญชีโฮสติ้งที่ใช้ร่วมกัน :-(
Simon East

2

นี่คือแฮ็กน้อยที่น่าสนใจเพื่อ "สะท้อน" ตัวแปรออกจากไฟล์. htaccess

หากคุณตั้งค่า AllowOverride เป็น FileInfo คุณสามารถตั้งค่าและเรียกใช้การตอบสนองข้อผิดพลาดที่กำหนดเองในไฟล์. htaccess ของคุณด้วยตัวแปรที่ต้องการในผลลัพธ์:

ErrorDocument 404 "Request: %{THE_REQUEST} Referrer: %{HTTP_REFERER} Host: %{HTTP_HOST}"
RewriteRule ^ - [L,R=404]

คุณสามารถแสดงข้อมูลที่เป็นประโยชน์ได้มากน้อยเพียงใดขึ้นอยู่กับความสร้างสรรค์ของคุณ

คุณไม่ จำกัด การใช้สถานะ 404 ในเนื้อหา "echoed" ของคุณ คุณสามารถแทนที่สถานะ 200 "ErrorDocument" ซึ่งคู่กับ<If>คำสั่งอาจทำให้แฮ็กนี้ใช้ประโยชน์อื่น ๆ ที่น่าสนใจในการส่งคืนเนื้อหาโดยตรงจากไฟล์. htaccess

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.