標籤:log file 程式 自動 檔案 遍曆 window 127.0.0.1 color
1.RewriteRule ^(com\/.*)$ index.php?do=$1
問:上面的規則匹配運算式 "^(.*)$" 匹配的內容是什麼
答:匹配內容是URI
網站目錄:/d/www
URL:http://127.0.0.1/admin/index.php
對應本地檔案:/d/www/admin/index.php,如果是windows檔案系統,由於不區分大小寫,如果網站下的目錄是Admin,那麼這裡的檔案地址會變成:/d/www/Admin/index.php,下面的URI也會跟著變。
URI:admin/index.php,這裡的URI是從檔案系統去掉網站目錄的部分與“%{REQUEST_URI}”有區別的。如果網站下的目錄是Admin,URI=Admin/index.php
%{REQUEST_URI}:/admin/index.php,是RUL去掉網域名稱的部分
%{REQUEST_FILENAME}:URL對應本地檔案,這裡有幾點要注意的地方:
1.windows檔案系統下,會自動根據本地的檔案夾大小寫進行轉換
2.FILENAME會自動去掉多餘的部分,如/d/www/admin/setting/index.php,如果admin是個空檔案夾,裡面沒有任何東西,這裡的%{REQUEST_FILENAME}=/d/www/admin/setting,估計apache的檔案系統是先從頂級目錄往下遍曆,當某個目錄不存時,則從這個不存在的目錄位址中斷。
2.無限迴圈導致報錯
重寫規則中有多條RewriteRule,某條被匹配到的RewriteRule標籤中加了[L],表示停止分析以後規則的重寫,為什麼後面的規則還是會運行,
答:重寫流程中,有任何一條RewriteRule被執行,都會用新的URI重複整個流程,直到整個流程都沒有發生重寫才結束rewrite程式。
apache rewrite_mod 經典疑問解答