爲什麼:現代重寫-l標誌不停止
http://example.com/robots.txt
重定向到:
http://www.example.com/mvc/view/robots/live-robots.txt
本規則:
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com
RewriteRule ^robots.txt /mvc/view/robots/live-robots.txt [L]
#.... 20 irrelevant lines for mobile rewrites
# Force the "www."
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
裝載然而,這:
http://www.example.com/robots.txt
按預期重寫live-robots.txt
。
不應該L
標誌停止在這兩種情況下的重定向,並沒有得到後者的規則?
在這種情況下,L標誌可以用來結束當前一輪的mod_rewrite處理。
https://httpd.apache.org/docs/current/rewrite/flags.html
當前執行路徑:
- http://example.com/robots.txt
- 301供應
- http://www.example.com/ mvc/view/robots/live-robots.txt
然後
- http://www.example.com/robots.txt
- 200(MVC /視圖/機器人/活的robots.txt的內容供應)
我敢肯定它不是一個正則表達式的問題,但這裏也是測試,https://regex101.com/r/eI9aC4/1。
什麼你改寫日誌是什麼樣子? – larsks
從訪問日誌中還是有重寫特定日誌的地方?訪問日誌具有'80 GET /robots.txt 301',然後 '80 GET /mvc/view/robots/live-robots.txt 304'。 – chris85
查看[文檔](http://httpd.apache.org/docs/current/mod/mod_rewrite.html#logging)(或[here](http://httpd.apache.org/docs/) 2.2/mod/mod_rewrite.html#rewritelog)for Apache 2.2)。 – larsks