-1

我的服务器上有一些现有的 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 文件使用脚本吗?

4

2 回答 2

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 开始重复

您需要做的Location:是读取some-page.html文件的内容并将其返回给浏览器,而不是响应标头,这实际上是“代理”浏览器的请求。因此浏览器不会被重定向。

至于如何在 php 中做到这一点,在 Stack Overflow 上有很多谷歌搜索结果甚至很多答案。

于 2012-12-15T06:31:42.737 回答
0

我想出了我应该怎么做。我做了以下

1) 将自定义日志格式添加到 httpd.conf 文件。

2) 添加了一个 customLog 指令。将输出通过管道传输到 stats.php。

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

于 2012-12-17T18:08:48.330 回答