【问题标题】:apache mod_rewrite to collect request infoapache mod_rewrite 收集请求信息
【发布时间】:2012-12-18 02:08:48
【问题描述】:

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

【问题讨论】:

  • 这是真正使用的 PHP 吗?因为语法不正确,所以什么都行不通。
  • @cryptic,语法不正确。它本来是伪代码。我会在文中说清楚。

标签: php mod-rewrite


【解决方案1】:

比如说,如果你去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 开始重复

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

至于如何在 php 中做到这一点,有大量的 google 搜索结果甚至大量的answers on Stack Overflow

【讨论】:

  • 你在写。这就是我想做的。
  • 我想出了我应该做什么。我做了以下 1) 将自定义日志格式添加到 httpd.conf 文件。 2) 添加了一个 customLog 指令。将输出通过管道传输到 stats.php。 3) stats.php 负责将代码添加到数据库中。
  • @user763410,您应该将其发布为您自己的单独答案。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多