apache mod_rewrite收集请求信息

时间:2012-12-15 03:15:06

标签: php mod-rewrite

我的服务器上有一些现有的PHP代码。现在我想要登录到我的服务器的请求的完整信息。我不想对现有代码进行任何更改。我正在使用apache mod_rewrite。我有一个示例php脚本,stats.php看起来像这样

<?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>

问题是,我担心从SEO的角度来看这可能不是最好的,也可能是错误的。有没有更好的方法来做到这一点?例如,我可以将脚本用于access_log文件吗?

2 个答案:

答案 0 :(得分:0)

比如说,如果你去http://your-domain.com/some-page.html,你会得到一个循环:

  1. 浏览器与请求URI联系的服务器/some-page.html
  2. mod_rewrite将URI重写为/stats.php?some-page.html
  3. stats.php 执行此操作,然后将浏览器重定向到/some-page.html
  4. 浏览器与请求URI联系的服务器/some-page.html
  5. 从#2开始重复
  6. 您需要执行的操作而不是使用Location:标头进行响应,请阅读some-page.html文件的内容并将其返回给浏览器,主要是“代理”浏览器的请求。因此浏览器不会被重定向。

    至于如何在php中做到这一点,有很多谷歌搜索结果,甚至还有很多answers on Stack Overflow

答案 1 :(得分:0)

我知道应该怎么做。我做了以下

1)将自定义logformat添加到httpd.conf文件。

2)添加了customLog dirctive。将输出传送到stats.php。

3)stats.php负责将代码添加到数据库中。