Apache: จะตรวจสอบบันทึกการเปลี่ยนเส้นทางได้ที่ไหน


10

ฉันมีความซับซ้อนRewriteCondและRewriteRuleในเครื่องเดียว และตามกฎเหล่านี้คำขอบางส่วนจะถูกเปลี่ยนเส้นทางไปยังเครื่องอื่น

ดังนั้นจะมีบันทึก Apache ที่แสดงให้เห็นชัดเจนว่าเกิดการเปลี่ยนเส้นทางอย่างไร? เพราะการเปลี่ยนเส้นทางเกิดขึ้นในแบบที่ฉันไม่คาดคิด

คำตอบ:


9

สำหรับมือใหม่นี่คือวิธีที่คุณควรเขียนไฟล์ * .conf ของคุณ:

  NameVirtualHost *:80
  <VirtualHost *:80 >
    ServerName gw.myserver.net
    DocumentRoot "C:\Program Files\MyCompany\myserver\Web"
    DirectoryIndex index.html index.php
    RewriteLog "logs\rewritelog.txt"
    RewriteLogLevel 3
    <Directory  "C:\Program Files\ MyCompany\ myserver\Web">
       AddDefaultCharset UTF-8
       Order Deny,Allow
       Allow from all

       RewriteEngine on
       RewriteBase /
       RewriteCond %{HTTP_HOST}   ^gw\. myserver\.net$
       RewriteRule !^(login|index.php)  http://pmmenu. myserver\.net%{REQUEST_URI}$1 [L,R=301]
       # we check if the .html version is here (caching)
       RewriteRule ^$ index.html [QSA]
       RewriteRule ^([^.]+)$ $1.html [QSA]
       RewriteCond %{REQUEST_FILENAME} !-f

       # no, so we redirect to our front web controller
       RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>
  </VirtualHost>

2
คำตอบที่ดี - ไม่ได้ฝึกหัดโปรดจำไว้ว่าระดับการบันทึกที่สูงกว่า 2 บนเซิร์ฟเวอร์ที่ใช้งานจริงอาจมีผลกระทบอย่างมาก
Cori

7
สำหรับ Apache รุ่นใหม่ (อย่างน้อย 2.4 และใหม่กว่า) RewriteLog / RewriteLogLevel จะไม่ทำงานอีกต่อไป มันถูกแทนที่ด้วยคำสั่ง LogLevel: httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
ronneseth


1

คุณสามารถกำหนดค่า logfile โดยเฉพาะสำหรับRewriteการประมวลผลด้วยRewriteLogคำสั่ง RewriteLogLevelปริมาณของการเข้าสู่ระบบที่สามารถเลือกด้วย

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