3

これは私を困惑させます、そしてそれがスクリプト固有でないなら、それは私のアプリケーションをホストしているAmazonAMIに何か問題があります。

.htaccessとインデックスファイルの正確な内容を投稿しています。唯一の違いは、私が送信する電子メールです。

これは私の.htaccessファイルです

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  Options +SymLinksIfOwnerMatch
  RewriteEngine On
  RewriteBase /
</IfModule>

Options -MultiViews

<IfModule mod_autoindex.c>
  Options -Indexes
</IfModule>

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ index.php/$1 [L,QSA]

これは私のindex.phpです

<?php

mail('me@email.com', '', '7');

インデックスページをロードすると、現在の設定で2通の電子メールが届きます。しかし、RewriteRuleをコメントアウトしてインデックスページをロードすると、1通の電子メールが正しく送信されます。

誰かがこれに遭遇しましたか?

編集:access_logはRewriteRuleでこれを示しています

[21/Feb/2013:03:48:27 +0000] "GET / HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
[21/Feb/2013:03:48:27 +0000] "GET /favicon.ico HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"

access_logは、RewriteRuleなしでこれを示します

[21/Feb/2013:03:47:58 +0000] "GET / HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
[21/Feb/2013:03:47:58 +0000] "GET /favicon.ico HTTP/1.1" 404 295 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
4

2 に答える 2

3

問題は、存在しないファイルに対するすべてのリクエストをにルーティングしていることですindex.php。ページが読み込まれると、ブラウザは自動的にhttp://yourdomain.com/favicon.icoにリクエストを送信します。このファイルはまだサイトに存在しないため、index.php再びヒットしています。これを回避するには、チェック$_SERVER['SCRIPT_FILENAME']インしindex.phpて、ページであることが想定されている場合にのみメールを生成します(画像ファイルなどとは対照的です)。

例えば:

if (!preg_match('/\.(ico|jpg|png|gif|txt)$/i', $_SERVER['SCRIPT_FILENAME']))
    mail('me@email.com', '', '7');

ico、、、、およびファイルjpgをチェックしpngます。giftxt

于 2013-02-21T03:55:11.637 に答える
0

問題は、RewriteRuleが正しくないことでした。

これが重複メールの原因でした

RewriteRule ^(.*)$ index.php/$1 [L,QSA]

修正は、このようなルールに「/」を追加することでした

RewriteRule ^/(.*)$ index.php/$1 [L,QSA]

私の想定では、オリジナルはリクエストRewriteRuleを正しくキャプチャしていませんでした。N RohlerGETが要求されていたと指摘したが、要求は次のように行われた。favicon.ico"/favicon.ico"

オリジナルに捕らえられていなかったRewriteRule

于 2013-02-21T04:14:26.657 に答える