-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

私は自分が何をすべきかを考えました。私は次のことをしました

1)カスタムログ形式をhttpd.confファイルに追加します。

2)customLogディレクトリを追加しました。出力をstats.phpにパイプしました。

3)stats.phpは、データベースへのコードの追加を処理します。

于 2012-12-17T18:08:48.330 に答える
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でそれを行う方法については、Googleの結果がたくさんあるか、 Stack Overflow にたくさんの回答があります。

于 2012-12-15T06:31:42.737 に答える