2009-06-28 46 views
0

我有兩個不同的域,指向我的主頁在同一臺服務器。如何記錄每個訪問我的網站與2個不同的域

我想記錄對我的主頁進行的每一次訪問,並記錄用戶用來訪問我的主頁的哪個域,我該怎麼做?

我嘗試了Apache中的mod_rewrite並用PHP登錄到MySQL數據庫,但我所能做的只是無限循環。

任何想法?

編輯:
通過您的回答,我看你沒有得到我想要的東西......

據我所知,谷歌Analytics(分析)不允許我區分域中,如果他們使用都指向相同的網站,它也不允許我看到像圖片這樣的文件直接訪問而不是通過我的網頁。

我不能僅僅使用$ _SERVER ['HTTP_HOST'],就像我剛纔說的那樣,我想記錄每件事情,就像圖像和所有其他文件一樣,即使它不存在。

至於Webalizer,我從來沒有看到它區分域,它總是假定帳戶中的默認域配置,並使用它作爲根,它甚至不顯示它。我得檢查一遍,但我不知道它會做我想做的......

的死循環:
我試着參與改寫apche的網址用一個簡單的重寫規則的方法指向PHP腳本,PHP腳本會將條目記錄到MySQL數據庫中,並使用header()函數將用戶發送迴文件。事情是這樣的:

的.htaccess:

RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.net [NC] 
RewriteRule ^(.*)$ http://www.domain1.net/logscript?a=$1 [NC,L] 

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.net [NC] 
RewriteRule ^(.*)$ http://www.domain2.net/logscript?a=$1 [NC,L] 

PHP腳本:

所以,我訪問了一些文件,點文件到PHP腳本,該腳本會日誌並重定向到該文件...但是,當PHP重定向到該文件時,htaccess規則將會撿起並再次重定向PHP腳本,從而創建無限循環。

回答

2

最好的辦法是解析服務器日誌。那些將顯示域和請求。即使大多數共享主機帳戶也提供對日誌的訪問。

如果您打算改寫路線,您可以使用RewriteCond檢查HTTP_REFERER的值以查看引用者是否是本地鏈接。

RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.net [NC] 
RewriteCond %{HTTP_REFERER} !^(.*)domain1(.*)$ [NC] 
RewriteRule ^(.*)$ http://www.domain1.net/logscript?a=$1 [NC,L] 

RewriteCond %{HTTP_HOST} ^(.*)domain2\.net [NC] 
RewriteCond %{HTTP_REFERER} !^(.*)domain2(.*)$ [NC] 
RewriteRule ^(.*)$ http://www.domain2.net/logscript?a=$1 [NC,L] 

您可能也想過帳在mod_rewrite論壇。他們有關於處理域的全部內容。

0

是否Google Analytics不提供此選項?或者你能否解析你的服務器日誌文件?

+0

請檢查編輯問題... – 2009-06-28 20:16:25

+0

不幸的是,我不知道如何在我目前的位置幫助你。您可以提出一個單獨的問題,提供有關您的解決方案的無限循環問題的信息,我們可以從這個角度來處理它。感謝你的理解。 – 2009-06-28 20:37:54

+0

我再次編輯了上面的問題來解釋無限循環。不需要再創建另一個問題。如果你想,只需在下面給出不同的答案。 – 2009-06-28 20:58:04

1

如果谷歌Analytics(分析)是不是你的東西,

$_SERVER['HTTP_HOST'] 

持有所使用的域名,你可以記錄所(隨着時間的推移,瀏覽器,文件路徑等一起)。我認爲不需要mod_rewrite。檢查print_r($ _ SERVER)以查看可能有趣的日誌記錄。
確保仍然可以轉義(mysql_real_escape_string())所有的日誌值,例如通過瀏覽器的用戶代理字符串注入SQL非常容易。


所以,我訪問了一些文件,點文件到PHP腳本和腳本將記錄並重定向到文件......然而,當PHP重定向到文件,htaccess的規則將挑選它再次重定向PHP腳本,創建一個無限循環。

您可以檢查RewriteCond中的HTTP標頭嗎?如果是這樣,嘗試在PHP中重定向旁邊設置額外的頭文件(按照慣例,自定義HTTP頭文件以'X-'開始,因此它可能是頭文件('X-stayhere:1');),如果X-stayhere頭文件是目前,RewriteCond失敗,它不會將瀏覽器轉發到PHP腳本。

但是,如果您可以cron腳本來下載服務器日誌並通過一些免費軟件日誌文件分析器來運行它們,那麼我會採用它。對於每個請求有兩個重定向是一個相當大的開銷..(如果我更清醒,我可能會想出不同的解決方案)

0

爲什麼不使用apache中的訪問日誌設施構建? Apache有一個「piped log」函數,允許您將訪問日誌重定向到任何程序。

CustomLog "|/path/to/your/logger" common 
相關問題