我想要一個儘可能快的重定向。所以我決定使用htaccess重定向,因爲它甚至在php解釋器初始化之前就會響應。但我想記錄重定向並將某些內容寫入數據庫。Htaccess:觸發php或寫入日誌
我試圖重定向和調用rewritemap只是爲了觸發一個PHP文件,但它只會引發500錯誤。
我會好的,如果我可以創建一個日誌文件,即使日誌處理將被延遲。重要的只是:快速重定向,跟蹤/記錄重定向。
你有什麼想法或建議嗎?
感謝你在前期
一切順利,
埃姆雷
我想要一個儘可能快的重定向。所以我決定使用htaccess重定向,因爲它甚至在php解釋器初始化之前就會響應。但我想記錄重定向並將某些內容寫入數據庫。Htaccess:觸發php或寫入日誌
我試圖重定向和調用rewritemap只是爲了觸發一個PHP文件,但它只會引發500錯誤。
我會好的,如果我可以創建一個日誌文件,即使日誌處理將被延遲。重要的只是:快速重定向,跟蹤/記錄重定向。
你有什麼想法或建議嗎?
感謝你在前期
一切順利,
埃姆雷
你可以使用RewriteLog
登錄改寫動作到一個文件 - 這將被Apache完成,無需調用PHP。
=>非常快;但只記錄到文件,而不是數據庫;如您所說,仍然可以延遲日誌處理,並通過從crontab運行的腳本完成日誌處理。
另請參閱RewriteLogLevel
,配置該日誌應該是多麼冗長。
你可能想嘗試牛逼Apache日誌到MySQL模塊,如: http://www.outoforder.cc/projects/apache/mod_log_sql/ 這裏是Debian http://www.howtoforge.com/apache2-logging-to-a-mysql-database-with-mod_log_sql-on-debian-etch
但我不是100%肯定這可與最新版的Apache一個HOWTO。
好運
能在阿帕奇/虛擬主機配置中使用,但不能在.htaccess(所以如果你可以把它放在那裏,記得要重新加載的Apache):
RewriteEngine On
RewriteRule /foo http://www.example.com [R=301,E=redirected]
CustomLog /path/to/log combined env=redirected
'組合拳' 被一個默認的日誌格式,但是你可以使用define your own
如果你的目標是儘可能簡單的使用日誌記錄,那麼主要關注點是保持磁盤I/O最小。依靠.htaccess,你在URL的每一級進行目錄掃描(http://muffinresearch.co.uk/archives/2008/04/07/avoiding-the-use-of-htaccess-for-performance /)。
如果您可以在Apache的conf中設置您的RewriteRule,並將您的重定向指向PHP文件,那麼您可以讓PHP運行w/APC並將記錄完成到一個memcache對象。這樣,您的整個客戶端訪問可能純粹發生在快速訪問的內存中,並且您可以有一個定期從memcache中獲取數據並將其推送到數據庫的cron-job(這樣您仍然可以長期存儲但客戶端的訪問不應該要求讀取磁盤)
顯然,如果您對數據庫靈活一點,可以使用Couchbase樣式的解決方案,它基本上可以讓您無需存儲就可以快速寫入memcache在易失性存儲器中的信息,但我猜你已經鎖定了你當前使用的數據庫。
+1,這是最好的解決方案,我喜歡只有在應用規則時才登錄環境var的apache日誌。而且肯定是最快的。刪除.htaccess文件的使用將使apache更快,用戶需要快速重定向,使用AllowOverride None刪除.htaccess讀取,並在常規apache文件中使用規則將避免大量運行時IO泄漏給每個目錄的配置文件。 – regilero