0

以下を含む htaccess ファイルがあります。

RewriteRule . index.php [L]

index.php:

mysql_query("UPDATE users SET Views = Views + 1 WHERE SteamID = '" . mysql_real_escape_string($steamid) . "'", $db);

index.php を開くと、mysql_query が 2 回実行され、そのたびに列ビューが 2 増加します。なぜですか?

追加した:

コンテンツでtest.phpを作成しました:

<?
$db = mysql_connect('localhost', '****', '******');
mysql_select_db("*****", $db);
mysql_query("UPDATE users SET Views = Views + 1 WHERE SteamID = '76561198037192367'", $db);
?>
loaded

このコードは3回実行されています!! .htaccess を削除すると、すべてが正常に機能します。それは本当に奇妙です...

4

2 に答える 2

2

あなたは書き直しています。すべてに一致します。CSS や JS などの静的ファイル、および /favicon.ico などの一般的なブラウザー リクエスト。

RewriteCond を追加して、ルールが既存のファイルと一致しないようにしてください。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

未テスト!

ルールをテスト URL に応答させることで、アクセス ログを表示できなくても、これが問題であるかどうかを確認できます。

RewriteRule /test/ test.php [L]

まだテストされていません!

ログ ファイルの代わりに、ブラウザからのすべてのリクエストを確認できる Firebug などの開発ツールを使用できます。

于 2012-09-20T19:32:14.280 に答える
0

index.phpルールは、ファイルが 2 回読み込まれる直接の原因ではありません。おそらく、index.php、または返される HTML コンテンツに、ルールがキャッチして に書き戻す何か (画像、スクリプト、スタイルなど) をブラウザに読み込ませる何かがありますindex.php。これにより、 にルーティングされるブラウザにページをロードするとindex.phpindex.php実際には 2 回実行されます。

index.php出力する HTML コンテンツを変更するかindex.php、特定の が要求されたときにのみクエリが実行されるようにスクリプトを変更するか、ルール_SERVER['REQUEST_URI']に制限条件を追加して 1 回だけ読み込まれるようにする必要があります。RewriteRule . index.php [L]

于 2012-09-20T19:08:21.327 に答える