2012-12-15 80 views
-1

我的服務器上有一些現有的PHP代碼。現在我想登錄關於請求到我的服務器的完整信息。我不想對現有代碼進行任何更改。我正在使用Apache mod_rewrite。我有一個示例PHP腳本,stats.php這看起來是這樣的apache mod_rewrite收集請求信息

<?php 

    /*NOTE:This is peseudo code!!!*/ 
    open database connection 
    add serverinfo, referer info, script_name, arguments info to database 
    change characters in request from UTF16 to UTF 8. 

    //Call header function for redirection 
    $str = Location : $_SERVER["REQUEST_URI"] 
    header ("$str"); 

?> 

在httpd.conf文件

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_URI} !/stats\.php 
RewriteCond %{REQUEST_URI} !\/favicon\.php 
RewriteRule ^/(.*)$  /stats.php?$1 [L] 
RewriteLog "logs/error_log" 
RewriteLogLevel 3 
</IfModule> 

的問題是,恐怕這未必是最好的搜索引擎優化的角度和也可能是越野車。有沒有更好的方法來做到這一點?例如,我可以使用腳本訪問access_log文件嗎?

+1

這是真正的PHP在使用嗎?因爲沒有任何工作,因爲它是不正確的語法。 –

+0

@cryptic,它的語法不正確。它被認爲是僞代碼。我會在文中說清楚。 – user763410

回答

0

比方說,如果你去http://your-domain.com/some-page.html,你會得到一個循環:用請求的URI /some-page.html

  • mod_rewrite的

    1. 瀏覽器聯繫人服務器重寫URI來/stats.php?some-page.html
    2. 統計。 php做它的事情,然後重定向瀏覽器到/some-page.html
    3. 瀏覽器聯繫人服務器與重新追求URI /some-page.html
    4. 重複開始,#2

    你需要做的,而不是與Location:頭響應什麼是閱讀some-page.html文件的內容,並返回給瀏覽器,基本上是「代理」的要求爲瀏覽器。因此瀏覽器不會重定向。

    至於如何做到這一點在PHP中,有大量的谷歌結果,甚至大量的answers on Stack Overflow

  • +0

    你正在寫。這是我想要做的。 – user763410

    +0

    我想我應該做什麼。我做了以下操作 1)將一個自定義的logformat添加到httpd.conf文件中。 2)增加了一個customLog dirctive。輸出到stats.php。 3)stats.php負責將代碼添加到數據庫。 – user763410

    +0

    @ user763410,您應該將其作爲您自己的單獨答案發布。 – Charles

    0

    我想我應該做什麼。我做了以下操作:

    1)將一個自定義的logformat添加到httpd.conf文件中。

    2)增加了一個customLog dirctive。輸出到stats.php。

    3)stats.php負責將代碼添加到數據庫。